summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2009-09-23 11:27:06 -0700
committerXavier Ducrohet <xav@android.com>2009-09-29 11:44:56 -0700
commitb91024c19c7c3182d926a199ad257b14513bb359 (patch)
tree6fa23f9f1dfffc113b5b2269435091e5c51ff050
parent501280889ce2bed1b73e7e6ae0d8f4d0afba018a (diff)
downloadbase-b91024c19c7c3182d926a199ad257b14513bb359.tar.gz
Fix #2101821: Cut labels of menu items in "SnapTell" market app.
Ummmm... this turns out to be pretty bad. NinePatchDrawable was not scaling its reported padding for compatibility mode, causing spacing to be off. All over the place. This change should improve things quite a bit (and magically makes nearly all of the menu flaws go away).
-rw-r--r--graphics/java/android/graphics/drawable/NinePatchDrawable.java26
1 files changed, 20 insertions, 6 deletions
diff --git a/graphics/java/android/graphics/drawable/NinePatchDrawable.java b/graphics/java/android/graphics/drawable/NinePatchDrawable.java
index d5c8a089b5e0..e182c1c33974 100644
--- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java
+++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java
@@ -152,10 +152,24 @@ public class NinePatchDrawable extends Drawable {
private void computeBitmapSize() {
final int sdensity = mNinePatch.getDensity();
final int tdensity = mTargetDensity;
- mBitmapWidth = Bitmap.scaleFromDensity(mNinePatch.getWidth(),
- sdensity, tdensity);
- mBitmapHeight = Bitmap.scaleFromDensity(mNinePatch.getHeight(),
- sdensity, tdensity);
+ if (sdensity == tdensity) {
+ mBitmapWidth = mNinePatch.getWidth();
+ mBitmapHeight = mNinePatch.getHeight();
+ } else {
+ mBitmapWidth = Bitmap.scaleFromDensity(mNinePatch.getWidth(),
+ sdensity, tdensity);
+ mBitmapHeight = Bitmap.scaleFromDensity(mNinePatch.getHeight(),
+ sdensity, tdensity);
+ Rect dest = mPadding;
+ Rect src = mNinePatchState.mPadding;
+ if (dest == src) {
+ mPadding = dest = new Rect(src);
+ }
+ dest.left = Bitmap.scaleFromDensity(src.left, sdensity, tdensity);
+ dest.top = Bitmap.scaleFromDensity(src.top, sdensity, tdensity);
+ dest.right = Bitmap.scaleFromDensity(src.right, sdensity, tdensity);
+ dest.bottom = Bitmap.scaleFromDensity(src.bottom, sdensity, tdensity);
+ }
}
// overrides
@@ -301,7 +315,6 @@ public class NinePatchDrawable extends Drawable {
if (!mMutated && super.mutate() == this) {
mNinePatchState = new NinePatchState(mNinePatchState);
mNinePatch = mNinePatchState.mNinePatch;
- mPadding = mNinePatchState.mPadding;
mMutated = true;
}
return this;
@@ -326,7 +339,8 @@ public class NinePatchDrawable extends Drawable {
NinePatchState(NinePatchState state) {
mNinePatch = new NinePatch(state.mNinePatch);
- mPadding = new Rect(state.mPadding);
+ // Note we don't copy the padding because it is immutable.
+ mPadding = state.mPadding;
mDither = state.mDither;
mChangingConfigurations = state.mChangingConfigurations;
mTargetDensity = state.mTargetDensity;