summaryrefslogtreecommitdiffstats
path: root/tests/DpiTest
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2009-07-18 17:13:29 -0700
committerDianne Hackborn <hackbod@google.com>2009-07-18 17:13:29 -0700
commit2784ff0af88128f66ae690b73d48fb7e4a211e68 (patch)
tree2e43aaa6e2a67a0924449af42d969b91de2f995d /tests/DpiTest
parenta53b828635fce8b6b2d3e3377d74d72070056623 (diff)
downloadframeworks_base-2784ff0af88128f66ae690b73d48fb7e4a211e68.zip
frameworks_base-2784ff0af88128f66ae690b73d48fb7e4a211e68.tar.gz
frameworks_base-2784ff0af88128f66ae690b73d48fb7e4a211e68.tar.bz2
Fix issue where scaled bitmap sizes could be wrong.
The Bitmap functions to get the scaled width/height couldn't actually do the right thing because they didn't know the destination they would be drawing to. Now there are two forms of them, taking an explicit parameter specifying the destination.
Diffstat (limited to 'tests/DpiTest')
-rw-r--r--tests/DpiTest/AndroidManifest.xml2
-rw-r--r--tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java15
2 files changed, 13 insertions, 4 deletions
diff --git a/tests/DpiTest/AndroidManifest.xml b/tests/DpiTest/AndroidManifest.xml
index ea355a4..68ecc6e 100644
--- a/tests/DpiTest/AndroidManifest.xml
+++ b/tests/DpiTest/AndroidManifest.xml
@@ -25,7 +25,7 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- <activity android:name="DpiTestActivityNoCompat" android:label="DpiTestCompat">
+ <activity android:name="DpiTestNoCompatActivity" android:label="DpiTestNoCompat">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
diff --git a/tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java b/tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java
index 9169025..8c69305 100644
--- a/tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java
+++ b/tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java
@@ -17,6 +17,8 @@
package com.google.android.test.dpi;
import android.app.Activity;
+import android.app.ActivityThread;
+import android.app.Application;
import android.os.Bundle;
import android.graphics.BitmapFactory;
import android.graphics.Bitmap;
@@ -31,6 +33,7 @@ import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.res.CompatibilityInfo;
+import android.util.DisplayMetrics;
public class DpiTestActivity extends Activity {
public DpiTestActivity() {
@@ -45,7 +48,10 @@ public class DpiTestActivity extends Activity {
public void init(boolean noCompat) {
try {
- ApplicationInfo ai = getPackageManager().getApplicationInfo(
+ // This is all a dirty hack. Don't think a real application should
+ // be doing it.
+ Application app = ActivityThread.currentActivityThread().getApplication();
+ ApplicationInfo ai = app.getPackageManager().getApplicationInfo(
"com.google.android.test.dpi",
PackageManager.GET_SUPPORTS_DENSITIES);
if (noCompat) {
@@ -53,8 +59,8 @@ public class DpiTestActivity extends Activity {
| ApplicationInfo.FLAG_SUPPORTS_NORMAL_SCREENS
| ApplicationInfo.FLAG_SUPPORTS_SMALL_SCREENS;
ai.supportsDensities = new int[] { ApplicationInfo.ANY_DENSITY };
+ app.getResources().setCompatibilityInfo(new CompatibilityInfo(ai));
}
- getResources().setCompatibilityInfo(new CompatibilityInfo(ai));
} catch (PackageManager.NameNotFoundException e) {
throw new RuntimeException("ouch", e);
}
@@ -192,7 +198,10 @@ public class DpiTestActivity extends Activity {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- setMeasuredDimension(mBitmap.getScaledWidth(), mBitmap.getScaledHeight());
+ final DisplayMetrics metrics = getResources().getDisplayMetrics();
+ setMeasuredDimension(
+ mBitmap.getScaledWidth(metrics),
+ mBitmap.getScaledHeight(metrics));
}
@Override