diff options
author | Dianne Hackborn <hackbod@google.com> | 2009-07-18 17:13:29 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2009-07-18 17:13:29 -0700 |
commit | 2784ff0af88128f66ae690b73d48fb7e4a211e68 (patch) | |
tree | 2e43aaa6e2a67a0924449af42d969b91de2f995d /tests/DpiTest | |
parent | a53b828635fce8b6b2d3e3377d74d72070056623 (diff) | |
download | frameworks_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.xml | 2 | ||||
-rw-r--r-- | tests/DpiTest/src/com/google/android/test/dpi/DpiTestActivity.java | 15 |
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 |