diff options
author | Chris Craik <ccraik@google.com> | 2015-06-09 10:43:03 -0700 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2015-06-09 13:50:01 -0700 |
commit | f396f011eefb79e1728747dcc1df9c42278a8d44 (patch) | |
tree | 497ab22ba39b4e6bcf478cc35aee46a10bc1dc5a /core/java/android/view/View.java | |
parent | 72285e5600fad17c42730d6f84164d8425d4d43c (diff) | |
download | frameworks_base-f396f011eefb79e1728747dcc1df9c42278a8d44.zip frameworks_base-f396f011eefb79e1728747dcc1df9c42278a8d44.tar.gz frameworks_base-f396f011eefb79e1728747dcc1df9c42278a8d44.tar.bz2 |
Dont ignore layer paint alpha in software path
bug:19412691
Change-Id: Ie56b2cbc667a078eb4a7c5bfe7b8e8dd6b0fc24b
Diffstat (limited to 'core/java/android/view/View.java')
-rw-r--r-- | core/java/android/view/View.java | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 342315b..2e6044e 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -16064,23 +16064,23 @@ 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; + // no layer paint, use temporary paint to draw bitmap + Paint cachePaint = parent.mCachePaint; if (cachePaint == null) { cachePaint = new Paint(); cachePaint.setDither(false); parent.mCachePaint = cachePaint; } + cachePaint.setAlpha((int) (alpha * 255)); + canvas.drawBitmap(cache, 0.0f, 0.0f, cachePaint); } else { - cachePaint = mLayerPaint; - restoreAlpha = mLayerPaint.getAlpha(); + // use layer paint to draw the bitmap, merging the two alphas, but also restore + int layerPaintAlpha = mLayerPaint.getAlpha(); + mLayerPaint.setAlpha((int) (alpha * layerPaintAlpha)); + canvas.drawBitmap(cache, 0.0f, 0.0f, mLayerPaint); + mLayerPaint.setAlpha(layerPaintAlpha); } - cachePaint.setAlpha((int) (alpha * 255)); - canvas.drawBitmap(cache, 0.0f, 0.0f, cachePaint); - cachePaint.setAlpha(restoreAlpha); } if (restoreTo >= 0) { |