diff options
| author | 2014-09-29 17:22:47 -0700 | |
|---|---|---|
| committer | 2014-09-29 17:22:47 -0700 | |
| commit | bddb843e793a279db99888dd78b4f74a362cbb8b (patch) | |
| tree | b950fc20888d22a85bc37f4a579e31e84a64e247 | |
| parent | f7c4509ffbbe6b1849c3ea61edac8d1d23906eaa (diff) | |
Fix drawable container tinting
BUG: 17704311
Change-Id: Ib9ced41e8589352c852e6c9dc7abbe6e4b9f2520
| -rw-r--r-- | graphics/java/android/graphics/drawable/DrawableContainer.java | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java index 0b052f4b95ee..4a719fee4920 100644 --- a/graphics/java/android/graphics/drawable/DrawableContainer.java +++ b/graphics/java/android/graphics/drawable/DrawableContainer.java @@ -177,11 +177,10 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { @Override public void setTintList(ColorStateList tint) { - mDrawableContainerState.mHasTint = tint != null - && mDrawableContainerState.mTintMode != null; + mDrawableContainerState.mHasTintList = true; - if (mDrawableContainerState.mTint != tint) { - mDrawableContainerState.mTint = tint; + if (mDrawableContainerState.mTintList != tint) { + mDrawableContainerState.mTintList = tint; if (mCurrDrawable != null) { mCurrDrawable.mutate().setTintList(tint); @@ -191,8 +190,7 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { @Override public void setTintMode(Mode tintMode) { - mDrawableContainerState.mHasTint = mDrawableContainerState.mTint != null - && tintMode != null; + mDrawableContainerState.mHasTintMode = true; if (mDrawableContainerState.mTintMode != tintMode) { mDrawableContainerState.mTintMode = tintMode; @@ -449,10 +447,15 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { d.setAlpha(mAlpha); } if (mDrawableContainerState.mHasColorFilter) { + // Color filter always overrides tint. d.setColorFilter(mDrawableContainerState.mColorFilter); - } else if (mDrawableContainerState.mHasTint) { - d.setTintList(mDrawableContainerState.mTint); - d.setTintMode(mDrawableContainerState.mTintMode); + } else { + if (mDrawableContainerState.mHasTintList) { + d.setTintList(mDrawableContainerState.mTintList); + } + if (mDrawableContainerState.mHasTintMode) { + d.setTintMode(mDrawableContainerState.mTintMode); + } } d.setVisible(isVisible(), true); d.setDither(mDrawableContainerState.mDither); @@ -623,9 +626,10 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { ColorFilter mColorFilter; boolean mHasColorFilter; - ColorStateList mTint; + ColorStateList mTintList; Mode mTintMode; - boolean mHasTint; + boolean mHasTintList; + boolean mHasTintMode; DrawableContainerState(DrawableContainerState orig, DrawableContainer owner, Resources res) { @@ -649,9 +653,10 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { mAutoMirrored = orig.mAutoMirrored; mColorFilter = orig.mColorFilter; mHasColorFilter = orig.mHasColorFilter; - mTint = orig.mTint; + mTintList = orig.mTintList; mTintMode = orig.mTintMode; - mHasTint = orig.mHasTint; + mHasTintList = orig.mHasTintList; + mHasTintMode = orig.mHasTintMode; // Cloning the following values may require creating futures. mConstantPadding = orig.getConstantPadding(); |