diff options
| author | 2012-01-17 06:06:17 -0800 | |
|---|---|---|
| committer | 2012-01-17 12:41:31 -0800 | |
| commit | a7a7eedee58b69ff3d36fa9d413ea902eb0d5d45 (patch) | |
| tree | cbca3ca0f4ae3e1dc6311d5009949669fc2808fe | |
| parent | 6a78cd85867c5f22e4e82259b81fab46088331ad (diff) | |
Check if View's alpha must be updated in setter
Change-Id: I91094b43dbacbd637e04ce4074d8df6a27ddf6fb
| -rw-r--r-- | core/java/android/view/View.java | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 64f862aa0ea1..7a4f54a8e8a0 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -7597,15 +7597,17 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal */ public void setAlpha(float alpha) { ensureTransformationInfo(); - mTransformationInfo.mAlpha = alpha; - invalidateParentCaches(); - if (onSetAlpha((int) (alpha * 255))) { - mPrivateFlags |= ALPHA_SET; - // subclass is handling alpha - don't optimize rendering cache invalidation - invalidate(true); - } else { - mPrivateFlags &= ~ALPHA_SET; - invalidate(false); + if (mTransformationInfo.mAlpha != alpha) { + mTransformationInfo.mAlpha = alpha; + invalidateParentCaches(); + if (onSetAlpha((int) (alpha * 255))) { + mPrivateFlags |= ALPHA_SET; + // subclass is handling alpha - don't optimize rendering cache invalidation + invalidate(true); + } else { + mPrivateFlags &= ~ALPHA_SET; + invalidate(false); + } } } @@ -7616,18 +7618,22 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal * alpha (the return value for onSetAlpha()). * * @param alpha The new value for the alpha property - * @return true if the View subclass handles alpha (the return value for onSetAlpha()) + * @return true if the View subclass handles alpha (the return value for onSetAlpha()) and + * the new value for the alpha property is different from the old value */ boolean setAlphaNoInvalidation(float alpha) { ensureTransformationInfo(); - mTransformationInfo.mAlpha = alpha; - boolean subclassHandlesAlpha = onSetAlpha((int) (alpha * 255)); - if (subclassHandlesAlpha) { - mPrivateFlags |= ALPHA_SET; - } else { - mPrivateFlags &= ~ALPHA_SET; + if (mTransformationInfo.mAlpha != alpha) { + mTransformationInfo.mAlpha = alpha; + boolean subclassHandlesAlpha = onSetAlpha((int) (alpha * 255)); + if (subclassHandlesAlpha) { + mPrivateFlags |= ALPHA_SET; + return true; + } else { + mPrivateFlags &= ~ALPHA_SET; + } } - return subclassHandlesAlpha; + return false; } /** |