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();
     }