diff options
author | John Reck <jreck@google.com> | 2014-08-18 16:06:48 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-08-16 04:01:11 +0000 |
commit | 9eee9dca63dfd596197b58011b85d9daa6f39f06 (patch) | |
tree | 81258a2df15a221cf95d1d306f82feeb5f3f953b | |
parent | d47ad033c35b2b69fc0be2073c682c30c855c124 (diff) | |
parent | fb5899d6e08c231901cbaefa8156b27ff92b8801 (diff) |
Merge "Don't mangle layer paint's alpha" into lmp-dev
-rw-r--r-- | core/java/android/view/View.java | 15 | ||||
-rw-r--r-- | core/java/android/view/ViewGroup.java | 4 |
2 files changed, 7 insertions, 12 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 01c7467870a1..e56581b81faa 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -89,7 +89,6 @@ import static java.lang.Math.max; import com.android.internal.R; import com.android.internal.util.Predicate; import com.android.internal.view.menu.MenuBuilder; - import com.google.android.collect.Lists; import com.google.android.collect.Maps; @@ -14704,8 +14703,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, if (layerType == LAYER_TYPE_HARDWARE && !usingRenderNodeProperties) { final HardwareLayer layer = getHardwareLayer(); if (layer != null && layer.isValid()) { + int restoreAlpha = mLayerPaint.getAlpha(); mLayerPaint.setAlpha((int) (alpha * 255)); ((HardwareCanvas) canvas).drawHardwareLayer(layer, 0, 0, mLayerPaint); + mLayerPaint.setAlpha(restoreAlpha); layerRendered = true; } else { final int scrollX = hasDisplayList ? 0 : sx; @@ -14733,6 +14734,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } else if (cache != null) { mPrivateFlags &= ~PFLAG_DIRTY_MASK; Paint cachePaint; + int restoreAlpha = 0; if (layerType == LAYER_TYPE_NONE) { cachePaint = parent.mCachePaint; @@ -14741,18 +14743,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback, cachePaint.setDither(false); parent.mCachePaint = cachePaint; } - if (alpha < 1) { - cachePaint.setAlpha((int) (alpha * 255)); - parent.mGroupFlags |= ViewGroup.FLAG_ALPHA_LOWER_THAN_ONE; - } else if ((flags & ViewGroup.FLAG_ALPHA_LOWER_THAN_ONE) != 0) { - cachePaint.setAlpha(255); - parent.mGroupFlags &= ~ViewGroup.FLAG_ALPHA_LOWER_THAN_ONE; - } } else { cachePaint = mLayerPaint; - cachePaint.setAlpha((int) (alpha * 255)); + restoreAlpha = mLayerPaint.getAlpha(); } + cachePaint.setAlpha((int) (alpha * 255)); canvas.drawBitmap(cache, 0.0f, 0.0f, cachePaint); + cachePaint.setAlpha(restoreAlpha); } if (restoreTo >= 0) { diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 7f1538158c8d..19dd5837fe42 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -279,9 +279,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager */ protected static final int FLAG_SUPPORT_STATIC_TRANSFORMATIONS = 0x800; - // When the previous drawChild() invocation used an alpha value that was lower than - // 1.0 and set it in mCachePaint - static final int FLAG_ALPHA_LOWER_THAN_ONE = 0x1000; + // UNUSED FLAG VALUE: 0x1000; /** * When set, this ViewGroup's drawable states also include those |