summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2009-09-23 11:27:06 -0700
committerDianne Hackborn <hackbod@google.com>2009-09-23 11:27:06 -0700
commitb8a9f12802ca5d1738a098a1769a8ed7959f248b (patch)
treee2eb23acf4e6fd979a1eefc120e97860816f699d /graphics
parentc413d54cd9283778e6d73965a1d1d5f63ba62ec3 (diff)
downloadframeworks_base-b8a9f12802ca5d1738a098a1769a8ed7959f248b.zip
frameworks_base-b8a9f12802ca5d1738a098a1769a8ed7959f248b.tar.gz
frameworks_base-b8a9f12802ca5d1738a098a1769a8ed7959f248b.tar.bz2
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). Change-Id: I94a8310d95b908b6f087db97d9afaed654ca6de5
Diffstat (limited to 'graphics')
-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 803e7b1..67a8015 100644
--- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java
+++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java
@@ -156,10 +156,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
@@ -320,7 +334,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;
@@ -345,7 +358,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;