diff options
| author | 2022-03-10 20:36:35 +0000 | |
|---|---|---|
| committer | 2022-03-10 20:36:35 +0000 | |
| commit | 64f13bc987f60b7cb14b121e11f9f3d1fe1b9f70 (patch) | |
| tree | 92d4d9d695664b3b8d79a8258a255f7e6959a854 | |
| parent | 2174fc233906f66f9619bd3cc3e9617fe118ad2f (diff) | |
| parent | 579e07b4dcecbdef0825985990096d8ff1bedce0 (diff) | |
Merge "Ripple mask shader not drawing properly" into tm-dev
| -rw-r--r-- | graphics/java/android/graphics/drawable/RippleDrawable.java | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java index ffaa4ea51452..c1addbf43937 100644 --- a/graphics/java/android/graphics/drawable/RippleDrawable.java +++ b/graphics/java/android/graphics/drawable/RippleDrawable.java @@ -1098,19 +1098,16 @@ public class RippleDrawable extends LayerDrawable { } // Draw the appropriate mask anchored to (0,0). + final int saveCount = mMaskCanvas.save(); final int left = bounds.left; final int top = bounds.top; - if (mState.mRippleStyle == STYLE_SOLID) { - mMaskCanvas.translate(-left, -top); - } + mMaskCanvas.translate(-left, -top); if (maskType == MASK_EXPLICIT) { drawMask(mMaskCanvas); } else if (maskType == MASK_CONTENT) { drawContent(mMaskCanvas); } - if (mState.mRippleStyle == STYLE_SOLID) { - mMaskCanvas.translate(left, top); - } + mMaskCanvas.restoreToCount(saveCount); if (mState.mRippleStyle == STYLE_PATTERNED) { for (int i = 0; i < mRunningAnimations.size(); i++) { mRunningAnimations.get(i).getProperties().getShader().setShader(mMaskShader); @@ -1210,9 +1207,13 @@ public class RippleDrawable extends LayerDrawable { updateMaskShaderIfNeeded(); // Position the shader to account for canvas translation. - if (mMaskShader != null && mState.mRippleStyle == STYLE_SOLID) { + if (mMaskShader != null) { final Rect bounds = getBounds(); - mMaskMatrix.setTranslate(bounds.left - x, bounds.top - y); + if (mState.mRippleStyle == STYLE_PATTERNED) { + mMaskMatrix.setTranslate(bounds.left, bounds.top); + } else { + mMaskMatrix.setTranslate(bounds.left - x, bounds.top - y); + } mMaskShader.setLocalMatrix(mMaskMatrix); } |