diff options
author | Alan Viverette <alanv@google.com> | 2014-02-26 15:38:51 -0800 |
---|---|---|
committer | Alan Viverette <alanv@google.com> | 2014-02-26 15:38:51 -0800 |
commit | 813d85b82cb7cbaa5dbe05496d1038caa17a1698 (patch) | |
tree | f14251dab86587b913be63e56071c363d45d6bef /core/java/android/widget/ProgressBar.java | |
parent | ba7d4f564c1858d46ad55e6a6ca381f532f4acef (diff) | |
download | frameworks_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.java | 15 |
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; |