am 7e3e04c: Merge change 1408 into donut
Merge commit '7e3e04c144182c6807c66646b3f988beaba1720e'
* commit '7e3e04c144182c6807c66646b3f988beaba1720e':
* update all metrics data when updating density.
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 2fc476e..5cb9fe2 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -191,16 +191,11 @@
usePreloaded = false;
DisplayMetrics newMetrics = new DisplayMetrics();
newMetrics.setTo(metrics);
- float invertedScale = 1.0f / applicationScale;
- newMetrics.density *= invertedScale;
- newMetrics.xdpi *= invertedScale;
- newMetrics.ydpi *= invertedScale;
- newMetrics.widthPixels *= invertedScale;
- newMetrics.heightPixels *= invertedScale;
+ float newDensity = metrics.density / applicationScale;
+ newMetrics.updateDensity(newDensity);
metrics = newMetrics;
}
- //Log.i(TAG, "Resource:" + appDir + ", density " + newMetrics.density + ", orig density:" +
- // metrics.density);
+ //Log.i(TAG, "Resource:" + appDir + ", display metrics=" + metrics);
r = new Resources(assets, metrics, getConfiguration(), usePreloaded);
//Log.i(TAG, "Created app resources " + r + ": " + r.getConfiguration());
// XXX need to remove entries when weak references go away
@@ -3502,8 +3497,11 @@
Resources r = v.get();
if (r != null) {
// keep the original density based on application cale.
- appDm.density = r.getDisplayMetrics().density;
+ appDm.updateDensity(r.getDisplayMetrics().density);
+ Log.i("oshima", "Updated app display metrics " + appDm);
r.updateConfiguration(config, appDm);
+ // reset
+ appDm.setTo(dm);
//Log.i(TAG, "Updated app resources " + v.getKey()
// + " " + r + ": " + r.getConfiguration());
} else {
diff --git a/core/java/android/inputmethodservice/Keyboard.java b/core/java/android/inputmethodservice/Keyboard.java
index 6a560ce..fea63be 100755
--- a/core/java/android/inputmethodservice/Keyboard.java
+++ b/core/java/android/inputmethodservice/Keyboard.java
@@ -27,8 +27,7 @@
import android.util.Log;
import android.util.TypedValue;
import android.util.Xml;
-import android.view.Display;
-import android.view.WindowManager;
+import android.util.DisplayMetrics;
import java.io.IOException;
import java.util.ArrayList;
@@ -510,10 +509,11 @@
* @param modeId keyboard mode identifier
*/
public Keyboard(Context context, int xmlLayoutResId, int modeId) {
- WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
- final Display display = wm.getDefaultDisplay();
- mDisplayWidth = display.getWidth();
- mDisplayHeight = display.getHeight();
+ DisplayMetrics dm = context.getResources().getDisplayMetrics();
+ mDisplayWidth = dm.widthPixels;
+ mDisplayHeight = dm.heightPixels;
+ //Log.v(TAG, "keyboard's display metrics:" + dm);
+
mDefaultHorizontalGap = 0;
mDefaultWidth = mDisplayWidth / 10;
mDefaultVerticalGap = 0;
diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java
index 095f4f4..e4dd020 100644
--- a/core/java/android/util/DisplayMetrics.java
+++ b/core/java/android/util/DisplayMetrics.java
@@ -99,4 +99,24 @@
xdpi = DEVICE_DENSITY;
ydpi = DEVICE_DENSITY;
}
+
+ /**
+ * Set the display metrics' density and update parameters depend on it.
+ * @hide
+ */
+ public void updateDensity(float newDensity) {
+ float ratio = newDensity / density;
+ density = newDensity;
+ scaledDensity = density;
+ widthPixels *= ratio;
+ heightPixels *= ratio;
+ xdpi *= ratio;
+ ydpi *= ratio;
+ }
+
+ public String toString() {
+ return "DisplayMetrics{density=" + density + ", width=" + widthPixels +
+ ", height=" + heightPixels + ", scaledDensity=" + scaledDensity +
+ ", xdpi=" + xdpi + ", ydpi=" + ydpi + "}";
+ }
}