summaryrefslogtreecommitdiffstats
path: root/core/java/android/widget/ProgressBar.java
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2014-02-26 15:38:51 -0800
committerAlan Viverette <alanv@google.com>2014-02-26 15:38:51 -0800
commit813d85b82cb7cbaa5dbe05496d1038caa17a1698 (patch)
treef14251dab86587b913be63e56071c363d45d6bef /core/java/android/widget/ProgressBar.java
parentba7d4f564c1858d46ad55e6a6ca381f532f4acef (diff)
downloadframeworks_base-813d85b82cb7cbaa5dbe05496d1038caa17a1698.zip
frameworks_base-813d85b82cb7cbaa5dbe05496d1038caa17a1698.tar.gz
frameworks_base-813d85b82cb7cbaa5dbe05496d1038caa17a1698.tar.bz2
Fix progress bar tinting, add tint support to ShapeDrawable
Cleans up APIs a little, since I think we may want to add tinting modes beyond what Porter-Duff can provide. Plus we don't actually support some of the Porter-Duff modes in hardware. Change-Id: I2cea1b737cc93607a24842c54eb9f0d8346b29d4
Diffstat (limited to 'core/java/android/widget/ProgressBar.java')
-rw-r--r--core/java/android/widget/ProgressBar.java15
1 files changed, 10 insertions, 5 deletions
diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java
index af9e2f0..f7e81b8 100644
--- a/core/java/android/widget/ProgressBar.java
+++ b/core/java/android/widget/ProgressBar.java
@@ -346,19 +346,24 @@ public class ProgressBar extends View {
return out;
} else if (drawable instanceof BitmapDrawable) {
- final Bitmap tileBitmap = ((BitmapDrawable) drawable).getBitmap();
+ final BitmapDrawable bitmap = (BitmapDrawable) drawable;
+ final Bitmap tileBitmap = bitmap.getBitmap();
if (mSampleTile == null) {
mSampleTile = tileBitmap;
}
-
- final ShapeDrawable shapeDrawable = new ShapeDrawable(getDrawableShape());
+ final ShapeDrawable shapeDrawable = new ShapeDrawable(getDrawableShape());
final BitmapShader bitmapShader = new BitmapShader(tileBitmap,
Shader.TileMode.REPEAT, Shader.TileMode.CLAMP);
shapeDrawable.getPaint().setShader(bitmapShader);
- return (clip) ? new ClipDrawable(shapeDrawable, Gravity.LEFT,
- ClipDrawable.HORIZONTAL) : shapeDrawable;
+ // Ensure the color filter and tint are propagated.
+ shapeDrawable.setTint(bitmap.getTint());
+ shapeDrawable.setTintMode(bitmap.getTintMode());
+ shapeDrawable.setColorFilter(bitmap.getColorFilter());
+
+ return clip ? new ClipDrawable(
+ shapeDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL) : shapeDrawable;
}
return drawable;