From 54229ee5eb92e3e2fc63d75353bcf09e0ebc8030 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Tue, 1 Feb 2011 13:05:16 -0800 Subject: [PATCH] Correctly set the alpha of a hardware layer before drawing it. Bug #3410819 Change-Id: I3ebaca2233f4edf5b59d84ec7706555056a1a4b1 --- core/java/android/view/ViewGroup.java | 8 +- tests/HwAccelerationTest/AndroidManifest.xml | 9 ++ .../res/layout/view_layers_4.xml | 48 +++++++++ .../com/android/test/hwui/ViewLayersActivity4.java | 115 +++++++++++++++++++++ 4 files changed, 174 insertions(+), 6 deletions(-) create mode 100644 tests/HwAccelerationTest/res/layout/view_layers_4.xml create mode 100644 tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity4.java diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index d0509b20134a..f0aaf3fb36cc 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -2444,17 +2444,12 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager layerType != LAYER_TYPE_NONE) { layerFlags |= Canvas.CLIP_TO_LAYER_SAVE_FLAG; } - if (layerType != LAYER_TYPE_NONE) { - child.mLayerPaint.setAlpha(multipliedAlpha); - } else { + if (layerType == LAYER_TYPE_NONE) { canvas.saveLayerAlpha(sx, sy, sx + cr - cl, sy + cb - ct, multipliedAlpha, layerFlags); } } else { // Alpha is handled by the child directly, clobber the layer's alpha - if (layerType != LAYER_TYPE_NONE) { - child.mLayerPaint.setAlpha(255); - } child.mPrivateFlags |= ALPHA_SET; } } @@ -2485,6 +2480,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager if (layerType == LAYER_TYPE_HARDWARE) { final HardwareLayer layer = child.getHardwareLayer(); if (layer != null && layer.isValid()) { + child.mLayerPaint.setAlpha((int) (alpha * 255)); ((HardwareCanvas) canvas).drawHardwareLayer(layer, 0, 0, child.mLayerPaint); layerRendered = true; } else { diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml index 2895b69f6f0a..2db44175a018 100644 --- a/tests/HwAccelerationTest/AndroidManifest.xml +++ b/tests/HwAccelerationTest/AndroidManifest.xml @@ -78,6 +78,15 @@ + + + + + + + + + + + + + +