diff options
Diffstat (limited to 'core/java/android/util/DisplayMetrics.java')
-rw-r--r-- | core/java/android/util/DisplayMetrics.java | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java new file mode 100644 index 0000000..9de4cbe --- /dev/null +++ b/core/java/android/util/DisplayMetrics.java @@ -0,0 +1,98 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import android.os.*; + + +/** + * A structure describing general information about a display, such as its + * size, density, and font scaling. + */ +public class DisplayMetrics { + /** + * The reference density used throughout the system. + * + * @hide Pending API council approval + */ + public static final int DEFAULT_DENSITY = 160; + + private static final int sLcdDensity = SystemProperties.getInt("ro.sf.lcd_density", + DEFAULT_DENSITY); + + /** + * The absolute width of the display in pixels. + */ + public int widthPixels; + /** + * The absolute height of the display in pixels. + */ + public int heightPixels; + /** + * The logical density of the display. This is a scaling factor for the + * Density Independent Pixel unit, where one DIP is one pixel on an + * approximately 160 dpi screen (for example a 240x320, 1.5"x2" screen), + * providing the baseline of the system's display. Thus on a 160dpi screen + * this density value will be 1; on a 106 dpi screen it would be .75; etc. + * + * <p>This value does not exactly follow the real screen size (as given by + * {@link #xdpi} and {@link #ydpi}, but rather is used to scale the size of + * the overall UI in steps based on gross changes in the display dpi. For + * example, a 240x320 screen will have a density of 1 even if its width is + * 1.8", 1.3", etc. However, if the screen resolution is increased to + * 320x480 but the screen size remained 1.5"x2" then the density would be + * increased (probably to 1.5). + * + * @see #DEFAULT_DENSITY + */ + public float density; + /** + * A scaling factor for fonts displayed on the display. This is the same + * as {@link #density}, except that it may be adjusted in smaller + * increments at runtime based on a user preference for the font size. + */ + public float scaledDensity; + /** + * The exact physical pixels per inch of the screen in the X dimension. + */ + public float xdpi; + /** + * The exact physical pixels per inch of the screen in the Y dimension. + */ + public float ydpi; + + public DisplayMetrics() { + } + + public void setTo(DisplayMetrics o) { + widthPixels = o.widthPixels; + heightPixels = o.heightPixels; + density = o.density; + scaledDensity = o.scaledDensity; + xdpi = o.xdpi; + ydpi = o.ydpi; + } + + public void setToDefaults() { + widthPixels = 0; + heightPixels = 0; + density = sLcdDensity / (float) DEFAULT_DENSITY; + scaledDensity = density; + xdpi = sLcdDensity; + ydpi = sLcdDensity; + } +} |