diff options
| author | Chris Craik <ccraik@google.com> | 2015-06-09 22:23:34 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-09 22:23:36 +0000 |
| commit | 751afe2040a1954826f550c0fdc2c1f148fe21eb (patch) | |
| tree | f75ef9d338e37a8c5075480683ea6fe252584f57 /core/java/android | |
| parent | bcdf0dc1992b97579c4d5e0822dd58c597bb45a5 (diff) | |
| parent | f396f011eefb79e1728747dcc1df9c42278a8d44 (diff) | |
Merge "Dont ignore layer paint alpha in software path" into mnc-dev
Diffstat (limited to 'core/java/android')
| -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 5dd5ab813fbd..be372d0bf859 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -16070,23 +16070,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) { |
