diff options
| author | 2012-02-14 15:58:30 -0800 | |
|---|---|---|
| committer | 2012-02-14 17:46:43 -0800 | |
| commit | 5e78d9bea5bddbf200b4349d445c7d6cc4383e20 (patch) | |
| tree | 10a3405a8ccc9d38c412782eb068c3a1e97e3654 | |
| parent | 9ae763133238ad5a1963d99a69cf891293345cb3 (diff) | |
Invalidate display list on alpha change
Bug 5945886
Change-Id: Ibab3ad2c9e526c038672699b571de154dfc8d17c
| -rw-r--r-- | core/java/android/widget/TextView.java | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 7db8a1e6c99c..13798ef1da38 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -4637,19 +4637,25 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener // Alpha is supported if and only if the drawing can be done in one pass. // TODO text with spans with a background color currently do not respect this alpha. if (getBackground() == null) { - mCurrentAlpha = alpha; - final Drawables dr = mDrawables; - if (dr != null) { - if (dr.mDrawableLeft != null) dr.mDrawableLeft.mutate().setAlpha(alpha); - if (dr.mDrawableTop != null) dr.mDrawableTop.mutate().setAlpha(alpha); - if (dr.mDrawableRight != null) dr.mDrawableRight.mutate().setAlpha(alpha); - if (dr.mDrawableBottom != null) dr.mDrawableBottom.mutate().setAlpha(alpha); - if (dr.mDrawableStart != null) dr.mDrawableStart.mutate().setAlpha(alpha); - if (dr.mDrawableEnd != null) dr.mDrawableEnd.mutate().setAlpha(alpha); + if (mCurrentAlpha != alpha) { + mCurrentAlpha = alpha; + final Drawables dr = mDrawables; + if (dr != null) { + if (dr.mDrawableLeft != null) dr.mDrawableLeft.mutate().setAlpha(alpha); + if (dr.mDrawableTop != null) dr.mDrawableTop.mutate().setAlpha(alpha); + if (dr.mDrawableRight != null) dr.mDrawableRight.mutate().setAlpha(alpha); + if (dr.mDrawableBottom != null) dr.mDrawableBottom.mutate().setAlpha(alpha); + if (dr.mDrawableStart != null) dr.mDrawableStart.mutate().setAlpha(alpha); + if (dr.mDrawableEnd != null) dr.mDrawableEnd.mutate().setAlpha(alpha); + } + mTextDisplayListIsValid = false; } return true; } + if (mCurrentAlpha != 255) { + mTextDisplayListIsValid = false; + } mCurrentAlpha = 255; return false; } |