diff options
| author | 2009-05-07 17:40:33 -0700 | |
|---|---|---|
| committer | 2009-05-07 17:40:33 -0700 | |
| commit | 8705a41a778bd0561737fd9b6fb2e1cdca0532b5 (patch) | |
| tree | 9340d5cbf7b0fe4f0640fd3a6179a42f2e97225a | |
| parent | c664d1837c34f3e7ab743f7fb96771b0c9d8df6e (diff) | |
| parent | 881c4c25f1f807952a6740ecad1680a8241b4de4 (diff) | |
Merge branch 'donut' of ssh://android-git.corp.google.com:29418/platform/frameworks/base into donut
| -rw-r--r-- | core/java/android/app/ActivityThread.java | 12 | ||||
| -rw-r--r-- | core/java/android/util/DisplayMetrics.java | 12 |
2 files changed, 15 insertions, 9 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index dfa3fa8f1471..2fc476ec603d 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -316,18 +316,16 @@ public final class ActivityThread { float appScale = -1.0f; if (ai.supportsDensities != null) { - // TODO: precompute this in DisplayMetrics - float systemDensityDpi = metrics.density * DisplayMetrics.DEFAULT_DENSITY; int minDiff = Integer.MAX_VALUE; for (int density : ai.supportsDensities) { - int tmpDiff = (int) Math.abs(systemDensityDpi - density); + int tmpDiff = (int) Math.abs(DisplayMetrics.DEVICE_DENSITY - density); if (tmpDiff == 0) { appScale = 1.0f; break; } // prefer higher density (appScale>1.0), unless that's only option. if (tmpDiff < minDiff && appScale < 1.0f) { - appScale = systemDensityDpi / density; + appScale = DisplayMetrics.DEVICE_DENSITY / density; minDiff = tmpDiff; } } @@ -3482,6 +3480,8 @@ public final class ActivityThread { } mConfiguration.updateFrom(config); DisplayMetrics dm = getDisplayMetricsLocked(true); + DisplayMetrics appDm = new DisplayMetrics(); + appDm.setTo(dm); // set it for java, this also affects newly created Resources if (config.locale != null) { @@ -3501,7 +3501,9 @@ public final class ActivityThread { WeakReference<Resources> v = it.next(); Resources r = v.get(); if (r != null) { - r.updateConfiguration(config, dm); + // keep the original density based on application cale. + appDm.density = r.getDisplayMetrics().density; + r.updateConfiguration(config, appDm); //Log.i(TAG, "Updated app resources " + v.getKey() // + " " + r + ": " + r.getConfiguration()); } else { diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java index 9de4cbe80665..095f4f476417 100644 --- a/core/java/android/util/DisplayMetrics.java +++ b/core/java/android/util/DisplayMetrics.java @@ -31,7 +31,11 @@ public class DisplayMetrics { */ public static final int DEFAULT_DENSITY = 160; - private static final int sLcdDensity = SystemProperties.getInt("ro.sf.lcd_density", + /** + * The device's density. + * @hide + */ + public static final int DEVICE_DENSITY = SystemProperties.getInt("ro.sf.lcd_density", DEFAULT_DENSITY); /** @@ -90,9 +94,9 @@ public class DisplayMetrics { public void setToDefaults() { widthPixels = 0; heightPixels = 0; - density = sLcdDensity / (float) DEFAULT_DENSITY; + density = DEVICE_DENSITY / (float) DEFAULT_DENSITY; scaledDensity = density; - xdpi = sLcdDensity; - ydpi = sLcdDensity; + xdpi = DEVICE_DENSITY; + ydpi = DEVICE_DENSITY; } } |