summaryrefslogtreecommitdiffstats
path: root/core/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
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')
-rw-r--r--core/java/android/content/res/Resources.java4
-rw-r--r--core/java/android/util/DisplayMetrics.java33
-rw-r--r--core/java/android/view/DisplayInfo.java1
3 files changed, 29 insertions, 9 deletions
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java
index f6a966b..77d3295 100644
--- a/core/java/android/content/res/Resources.java
+++ b/core/java/android/content/res/Resources.java
@@ -286,6 +286,7 @@ public class Resources {
CompatibilityInfo compatInfo) {
mAssets = assets;
mMetrics.setToDefaults();
+ mMetrics.updateDensity();
if (compatInfo != null) {
mCompatibilityInfo = compatInfo;
}
@@ -2123,6 +2124,7 @@ public class Resources {
if (mConfiguration.densityDpi != Configuration.DENSITY_DPI_UNDEFINED) {
mMetrics.densityDpi = mConfiguration.densityDpi;
mMetrics.density = mConfiguration.densityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE;
+ mMetrics.updateDensity();
}
mMetrics.scaledDensity = mMetrics.density * mConfiguration.fontScale;
@@ -2552,7 +2554,7 @@ public class Resources {
}
sPreloaded = true;
mPreloading = true;
- sPreloadedDensity = DisplayMetrics.DENSITY_DEVICE;
+ sPreloadedDensity = DisplayMetrics.getDeviceDensity();
mConfiguration.densityDpi = sPreloadedDensity;
updateConfiguration(null, null);
}
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;
}
}
diff --git a/core/java/android/view/DisplayInfo.java b/core/java/android/view/DisplayInfo.java
index cf17990..b07b9ec 100644
--- a/core/java/android/view/DisplayInfo.java
+++ b/core/java/android/view/DisplayInfo.java
@@ -505,6 +505,7 @@ public final class DisplayInfo implements Parcelable {
outMetrics.scaledDensity = outMetrics.noncompatScaledDensity = outMetrics.density;
outMetrics.xdpi = outMetrics.noncompatXdpi = physicalXDpi;
outMetrics.ydpi = outMetrics.noncompatYdpi = physicalYDpi;
+ outMetrics.updateDensity();
width = (configuration != null
&& configuration.screenWidthDp != Configuration.SCREEN_WIDTH_DP_UNDEFINED)