Do not invalidate drawable if tint doesn't change

Change-Id: I99d7a679ba3aa4978f2915f1a52f23dbce7fd971
This commit is contained in:
Jorim Jaggi
2016-02-09 21:36:41 -08:00
parent 2a061b5bcf
commit 7cd1f0d39a

View File

@@ -641,16 +641,22 @@ public class BitmapDrawable extends Drawable {
@Override
public void setTintList(ColorStateList tint) {
mBitmapState.mTint = tint;
mTintFilter = updateTintFilter(mTintFilter, tint, mBitmapState.mTintMode);
invalidateSelf();
final BitmapState state = mBitmapState;
if (state.mTint != tint) {
state.mTint = tint;
mTintFilter = updateTintFilter(mTintFilter, tint, mBitmapState.mTintMode);
invalidateSelf();
}
}
@Override
public void setTintMode(PorterDuff.Mode tintMode) {
mBitmapState.mTintMode = tintMode;
mTintFilter = updateTintFilter(mTintFilter, mBitmapState.mTint, tintMode);
invalidateSelf();
final BitmapState state = mBitmapState;
if (state.mTintMode != tintMode) {
state.mTintMode = tintMode;
mTintFilter = updateTintFilter(mTintFilter, mBitmapState.mTint, tintMode);
invalidateSelf();
}
}
/**