Improve hardware layers rendering speed when setting a View's alpha.
Change-Id: Ib1275677f531c60d9919978c5538c663fdb823b5
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index f05ef8c..53fc0c0 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -7905,7 +7905,16 @@
+ "LAYER_TYPE_SOFTWARE or LAYER_TYPE_HARDWARE");
}
- if (layerType == mLayerType) return;
+ if (layerType == mLayerType) {
+ if (layerType != LAYER_TYPE_NONE && paint != mLayerPaint) {
+ mLayerPaint = paint == null ? new Paint() : paint;
+ if (mParent instanceof ViewGroup) {
+ ((ViewGroup) mParent).invalidate();
+ }
+ invalidate();
+ }
+ return;
+ }
// Destroy any previous software drawing cache if needed
switch (mLayerType) {
@@ -7931,9 +7940,11 @@
}
mLayerType = layerType;
- mLayerPaint = mLayerType == LAYER_TYPE_NONE ? null : paint;
+ mLayerPaint = mLayerType == LAYER_TYPE_NONE ? null : (paint == null ? new Paint() : paint);
- // TODO: Make sure we invalidate the parent's display list
+ if (mParent instanceof ViewGroup) {
+ ((ViewGroup) mParent).invalidate();
+ }
invalidate();
}