summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2010-11-09 21:28:59 -0800
committerAdam Powell <adamp@google.com>2010-11-11 14:53:29 -0800
commit021aad952bee3ac9ee4a98c09f1a012359088dd2 (patch)
treeda02b1eba3c84ea6cbc95ace97c0ad7f9a52b17e /graphics
parentd781089731127bd9199d47f53b170895868b8750 (diff)
downloadframeworks_base-021aad952bee3ac9ee4a98c09f1a012359088dd2.zip
frameworks_base-021aad952bee3ac9ee4a98c09f1a012359088dd2.tar.gz
frameworks_base-021aad952bee3ac9ee4a98c09f1a012359088dd2.tar.bz2
First pass at styling progress bars for Holo.
Added attribute to let scale drawables size based on the intrinsic width and height as a minimum. This helps prevent artifacts when some 9-patches are used in situations like progress bars. Change-Id: I168a232d3225afe9b5578a05a9b8634a1084404c
Diffstat (limited to 'graphics')
-rw-r--r--graphics/java/android/graphics/drawable/LayerDrawable.java5
-rw-r--r--graphics/java/android/graphics/drawable/ScaleDrawable.java10
2 files changed, 12 insertions, 3 deletions
diff --git a/graphics/java/android/graphics/drawable/LayerDrawable.java b/graphics/java/android/graphics/drawable/LayerDrawable.java
index 501cca9..b6cce7e 100644
--- a/graphics/java/android/graphics/drawable/LayerDrawable.java
+++ b/graphics/java/android/graphics/drawable/LayerDrawable.java
@@ -21,7 +21,10 @@ import org.xmlpull.v1.XmlPullParserException;
import android.content.res.Resources;
import android.content.res.TypedArray;
-import android.graphics.*;
+import android.graphics.Canvas;
+import android.graphics.ColorFilter;
+import android.graphics.PixelFormat;
+import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;
diff --git a/graphics/java/android/graphics/drawable/ScaleDrawable.java b/graphics/java/android/graphics/drawable/ScaleDrawable.java
index b623d80..dcaf20b 100644
--- a/graphics/java/android/graphics/drawable/ScaleDrawable.java
+++ b/graphics/java/android/graphics/drawable/ScaleDrawable.java
@@ -95,6 +95,8 @@ public class ScaleDrawable extends Drawable implements Drawable.Callback {
float sw = getPercent(a, com.android.internal.R.styleable.ScaleDrawable_scaleWidth);
float sh = getPercent(a, com.android.internal.R.styleable.ScaleDrawable_scaleHeight);
int g = a.getInt(com.android.internal.R.styleable.ScaleDrawable_scaleGravity, Gravity.LEFT);
+ boolean min = a.getBoolean(
+ com.android.internal.R.styleable.ScaleDrawable_useIntrinsicSizeAsMinimum, false);
Drawable dr = a.getDrawable(com.android.internal.R.styleable.ScaleDrawable_drawable);
a.recycle();
@@ -116,6 +118,7 @@ public class ScaleDrawable extends Drawable implements Drawable.Callback {
mScaleState.mScaleWidth = sw;
mScaleState.mScaleHeight = sh;
mScaleState.mGravity = g;
+ mScaleState.mUseIntrinsicSizeAsMin = min;
if (dr != null) {
dr.setCallback(this);
}
@@ -206,15 +209,16 @@ public class ScaleDrawable extends Drawable implements Drawable.Callback {
@Override
protected void onBoundsChange(Rect bounds) {
final Rect r = mTmpRect;
+ final boolean min = mScaleState.mUseIntrinsicSizeAsMin;
int level = getLevel();
int w = bounds.width();
- final int iw = 0; //mScaleState.mDrawable.getIntrinsicWidth();
if (mScaleState.mScaleWidth > 0) {
+ final int iw = min ? mScaleState.mDrawable.getIntrinsicWidth() : 0;
w -= (int) ((w - iw) * (10000 - level) * mScaleState.mScaleWidth / 10000);
}
int h = bounds.height();
- final int ih = 0; //mScaleState.mDrawable.getIntrinsicHeight();
if (mScaleState.mScaleHeight > 0) {
+ final int ih = min ? mScaleState.mDrawable.getIntrinsicHeight() : 0;
h -= (int) ((h - ih) * (10000 - level) * mScaleState.mScaleHeight / 10000);
}
Gravity.apply(mScaleState.mGravity, w, h, bounds, r);
@@ -258,6 +262,7 @@ public class ScaleDrawable extends Drawable implements Drawable.Callback {
float mScaleWidth;
float mScaleHeight;
int mGravity;
+ boolean mUseIntrinsicSizeAsMin;
private boolean mCheckedConstantState;
private boolean mCanConstantState;
@@ -273,6 +278,7 @@ public class ScaleDrawable extends Drawable implements Drawable.Callback {
mScaleWidth = orig.mScaleWidth;
mScaleHeight = orig.mScaleHeight;
mGravity = orig.mGravity;
+ mUseIntrinsicSizeAsMin = orig.mUseIntrinsicSizeAsMin;
mCheckedConstantState = mCanConstantState = true;
}
}