summaryrefslogtreecommitdiff
path: root/graphics/java/android
diff options
context:
space:
mode:
authorLucas Dupin <dupin@google.com>2021-06-07 12:08:48 -0700
committerLucas Dupin <dupin@google.com>2021-06-07 12:13:17 -0700
commit562e3d6af1b72020030c431d314060a316a8b3e2 (patch)
treede24b44fe510f3c0425debe826a2105528f138be /graphics/java/android
parenta48422c324b097c4f91668b0ba10e68fe59e6ef4 (diff)
Isolate focus color filter
The mask color filter has an alpha applied to it, it should not be used on the focused states. Focus works differently, where the alpha is defined by the state itself (20% for hover, and 60% focus,) combined with the paint alpha. Test: adb shell input keyevent 22 Test: manual on list item (not masked) Test: manual on button (masked) Fixes: 184717563 Change-Id: I01b8540face638330d016b413e70f2b74ce5592c
Diffstat (limited to 'graphics/java/android')
-rw-r--r--graphics/java/android/graphics/drawable/RippleDrawable.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java
index 73e65c2ec050..0d8715bfaef2 100644
--- a/graphics/java/android/graphics/drawable/RippleDrawable.java
+++ b/graphics/java/android/graphics/drawable/RippleDrawable.java
@@ -182,6 +182,7 @@ public class RippleDrawable extends LayerDrawable {
private Canvas mMaskCanvas;
private Matrix mMaskMatrix;
private PorterDuffColorFilter mMaskColorFilter;
+ private PorterDuffColorFilter mFocusColorFilter;
private boolean mHasValidMask;
private int mComputedRadius = -1;
@@ -938,7 +939,7 @@ public class RippleDrawable extends LayerDrawable {
final int alpha = Math.min((int) (origAlpha * newOpacity + 0.5f), 255);
if (alpha > 0) {
ColorFilter origFilter = p.getColorFilter();
- p.setColorFilter(mMaskColorFilter);
+ p.setColorFilter(mFocusColorFilter);
p.setAlpha(alpha);
c.drawCircle(cx, cy, getComputedRadius(), p);
p.setAlpha(origAlpha);
@@ -1091,6 +1092,7 @@ public class RippleDrawable extends LayerDrawable {
if (mMaskColorFilter == null) {
mMaskColorFilter = new PorterDuffColorFilter(0, PorterDuff.Mode.SRC_IN);
+ mFocusColorFilter = new PorterDuffColorFilter(0, PorterDuff.Mode.SRC_IN);
}
// Draw the appropriate mask anchored to (0,0).
@@ -1219,6 +1221,8 @@ public class RippleDrawable extends LayerDrawable {
int maskColor = mState.mRippleStyle == STYLE_PATTERNED ? color : color | 0xFF000000;
if (mMaskColorFilter.getColor() != maskColor) {
mMaskColorFilter = new PorterDuffColorFilter(maskColor, mMaskColorFilter.getMode());
+ mFocusColorFilter = new PorterDuffColorFilter(color | 0xFF000000,
+ mFocusColorFilter.getMode());
}
p.setColor(color & 0xFF000000);
p.setColorFilter(mMaskColorFilter);