summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2014-08-18 16:06:48 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-08-16 04:01:11 +0000
commit9eee9dca63dfd596197b58011b85d9daa6f39f06 (patch)
tree81258a2df15a221cf95d1d306f82feeb5f3f953b
parentd47ad033c35b2b69fc0be2073c682c30c855c124 (diff)
parentfb5899d6e08c231901cbaefa8156b27ff92b8801 (diff)
Merge "Don't mangle layer paint's alpha" into lmp-dev
-rw-r--r--core/java/android/view/View.java15
-rw-r--r--core/java/android/view/ViewGroup.java4
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