am 35ebdd05: am b805da9b: Merge "Fix drawable container tinting" into lmp-dev

* commit '35ebdd0514c7d3e6b2e64acb916f5160821bd463':
  Fix drawable container tinting
This commit is contained in:
Alan Viverette
2014-10-01 00:58:59 +00:00
committed by Android Git Automerger

View File

@@ -177,11 +177,10 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
@Override @Override
public void setTintList(ColorStateList tint) { public void setTintList(ColorStateList tint) {
mDrawableContainerState.mHasTint = tint != null mDrawableContainerState.mHasTintList = true;
&& mDrawableContainerState.mTintMode != null;
if (mDrawableContainerState.mTint != tint) { if (mDrawableContainerState.mTintList != tint) {
mDrawableContainerState.mTint = tint; mDrawableContainerState.mTintList = tint;
if (mCurrDrawable != null) { if (mCurrDrawable != null) {
mCurrDrawable.mutate().setTintList(tint); mCurrDrawable.mutate().setTintList(tint);
@@ -191,8 +190,7 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
@Override @Override
public void setTintMode(Mode tintMode) { public void setTintMode(Mode tintMode) {
mDrawableContainerState.mHasTint = mDrawableContainerState.mTint != null mDrawableContainerState.mHasTintMode = true;
&& tintMode != null;
if (mDrawableContainerState.mTintMode != tintMode) { if (mDrawableContainerState.mTintMode != tintMode) {
mDrawableContainerState.mTintMode = tintMode; mDrawableContainerState.mTintMode = tintMode;
@@ -449,10 +447,15 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
d.setAlpha(mAlpha); d.setAlpha(mAlpha);
} }
if (mDrawableContainerState.mHasColorFilter) { if (mDrawableContainerState.mHasColorFilter) {
// Color filter always overrides tint.
d.setColorFilter(mDrawableContainerState.mColorFilter); d.setColorFilter(mDrawableContainerState.mColorFilter);
} else if (mDrawableContainerState.mHasTint) { } else {
d.setTintList(mDrawableContainerState.mTint); if (mDrawableContainerState.mHasTintList) {
d.setTintMode(mDrawableContainerState.mTintMode); d.setTintList(mDrawableContainerState.mTintList);
}
if (mDrawableContainerState.mHasTintMode) {
d.setTintMode(mDrawableContainerState.mTintMode);
}
} }
d.setVisible(isVisible(), true); d.setVisible(isVisible(), true);
d.setDither(mDrawableContainerState.mDither); d.setDither(mDrawableContainerState.mDither);
@@ -623,9 +626,10 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
ColorFilter mColorFilter; ColorFilter mColorFilter;
boolean mHasColorFilter; boolean mHasColorFilter;
ColorStateList mTint; ColorStateList mTintList;
Mode mTintMode; Mode mTintMode;
boolean mHasTint; boolean mHasTintList;
boolean mHasTintMode;
DrawableContainerState(DrawableContainerState orig, DrawableContainer owner, DrawableContainerState(DrawableContainerState orig, DrawableContainer owner,
Resources res) { Resources res) {
@@ -649,9 +653,10 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
mAutoMirrored = orig.mAutoMirrored; mAutoMirrored = orig.mAutoMirrored;
mColorFilter = orig.mColorFilter; mColorFilter = orig.mColorFilter;
mHasColorFilter = orig.mHasColorFilter; mHasColorFilter = orig.mHasColorFilter;
mTint = orig.mTint; mTintList = orig.mTintList;
mTintMode = orig.mTintMode; mTintMode = orig.mTintMode;
mHasTint = orig.mHasTint; mHasTintList = orig.mHasTintList;
mHasTintMode = orig.mHasTintMode;
// Cloning the following values may require creating futures. // Cloning the following values may require creating futures.
mConstantPadding = orig.getConstantPadding(); mConstantPadding = orig.getConstantPadding();