summaryrefslogtreecommitdiffstats
path: root/core/java/android/util/DisplayMetrics.java
diff options
context:
space:
mode:
authorTom Marshall <tdm.code@gmail.com>2013-11-21 19:03:26 +0000
committerSteve Kondik <steve@cyngn.com>2015-10-26 21:55:37 -0700
commitd1e82836e05fd35e4627f97bd06419e8f50b00b7 (patch)
treeb575ceffb64d10e65b9d7c5ae1b3080d3f927682 /core/java/android/util/DisplayMetrics.java
parent4f0ec345abdbc360fa7d4836ddaf3c22e5835be6 (diff)
downloadframeworks_base-d1e82836e05fd35e4627f97bd06419e8f50b00b7.zip
frameworks_base-d1e82836e05fd35e4627f97bd06419e8f50b00b7.tar.gz
frameworks_base-d1e82836e05fd35e4627f97bd06419e8f50b00b7.tar.bz2
Allow custom density setting
Use system property persist.sys.lcd_density to set custom density. The custom setting affects the entire UI. It is independent of ro.sf.lcd_density and has no effect on play store compatibility. Code distilled from PA project via PAC project. Change-Id: I8d26405d5d33bdf2890a0e9f67f113a4dc3e763b
Diffstat (limited to 'core/java/android/util/DisplayMetrics.java')
-rw-r--r--core/java/android/util/DisplayMetrics.java33
1 files changed, 25 insertions, 8 deletions
diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java
index 9a69600..142c135 100644
--- a/core/java/android/util/DisplayMetrics.java
+++ b/core/java/android/util/DisplayMetrics.java
@@ -138,7 +138,15 @@ public class DisplayMetrics {
* density for a display in {@link #densityDpi}.
*/
@Deprecated
- public static int DENSITY_DEVICE = getDeviceDensity();
+ public static int DENSITY_DEVICE;
+
+ public static int DENSITY_CURRENT;
+
+ static {
+ DENSITY_DEVICE = SystemProperties.getInt("qemu.sf.lcd_density", SystemProperties
+ .getInt("ro.sf.lcd_density", DENSITY_DEFAULT));
+ DENSITY_CURRENT = SystemProperties.getInt("persist.sys.lcd_density", DENSITY_DEVICE);
+ }
/**
* The absolute width of the display in pixels.
@@ -229,6 +237,19 @@ public class DisplayMetrics {
*/
public float noncompatYdpi;
+ public void updateDensity() {
+ density = DENSITY_CURRENT / (float) DENSITY_DEFAULT;
+ densityDpi = DENSITY_CURRENT;
+ scaledDensity = density;
+ xdpi = DENSITY_CURRENT;
+ ydpi = DENSITY_CURRENT;
+ noncompatDensity = density;
+ noncompatDensityDpi = densityDpi;
+ noncompatScaledDensity = scaledDensity;
+ noncompatXdpi = xdpi;
+ noncompatYdpi = ydpi;
+ }
+
public DisplayMetrics() {
}
@@ -247,6 +268,7 @@ public class DisplayMetrics {
noncompatScaledDensity = o.noncompatScaledDensity;
noncompatXdpi = o.noncompatXdpi;
noncompatYdpi = o.noncompatYdpi;
+ updateDensity();
}
public void setToDefaults() {
@@ -320,12 +342,7 @@ public class DisplayMetrics {
", xdpi=" + xdpi + ", ydpi=" + ydpi + "}";
}
- private static int getDeviceDensity() {
- // qemu.sf.lcd_density can be used to override ro.sf.lcd_density
- // when running in the emulator, allowing for dynamic configurations.
- // The reason for this is that ro.sf.lcd_density is write-once and is
- // set by the init process when it parses build.prop before anything else.
- return SystemProperties.getInt("qemu.sf.lcd_density",
- SystemProperties.getInt("ro.sf.lcd_density", DENSITY_DEFAULT));
+ public static int getDeviceDensity() {
+ return DENSITY_CURRENT;
}
}