Merge "Fix ripple radius calculation" into sc-dev

This commit is contained in:
Jay Aliomer
2021-06-24 18:06:50 +00:00
committed by Android (Google) Code Review

View File

@@ -184,7 +184,6 @@ public class RippleDrawable extends LayerDrawable {
private PorterDuffColorFilter mMaskColorFilter; private PorterDuffColorFilter mMaskColorFilter;
private PorterDuffColorFilter mFocusColorFilter; private PorterDuffColorFilter mFocusColorFilter;
private boolean mHasValidMask; private boolean mHasValidMask;
private int mComputedRadius = -1;
/** The current ripple. May be actively animating or pending entry. */ /** The current ripple. May be actively animating or pending entry. */
private RippleForeground mRipple; private RippleForeground mRipple;
@@ -390,8 +389,6 @@ public class RippleDrawable extends LayerDrawable {
if (mRipple != null) { if (mRipple != null) {
mRipple.onBoundsChange(); mRipple.onBoundsChange();
} }
mComputedRadius = Math.round(computeRadius());
invalidateSelf(); invalidateSelf();
} }
@@ -750,7 +747,7 @@ public class RippleDrawable extends LayerDrawable {
if (mBackground != null) { if (mBackground != null) {
mBackground.onHotspotBoundsChanged(); mBackground.onHotspotBoundsChanged();
} }
float newRadius = Math.round(computeRadius()); float newRadius = Math.round(getComputedRadius());
for (int i = 0; i < mRunningAnimations.size(); i++) { for (int i = 0; i < mRunningAnimations.size(); i++) {
RippleAnimationSession s = mRunningAnimations.get(i); RippleAnimationSession s = mRunningAnimations.get(i);
s.setRadius(newRadius); s.setRadius(newRadius);
@@ -939,14 +936,13 @@ public class RippleDrawable extends LayerDrawable {
} }
private float computeRadius() { private float computeRadius() {
Rect b = getDirtyBounds(); final float halfWidth = mHotspotBounds.width() / 2.0f;
float radius = (float) Math.sqrt(b.width() * b.width() + b.height() * b.height()) / 2; final float halfHeight = mHotspotBounds.height() / 2.0f;
return radius; return (float) Math.sqrt(halfWidth * halfWidth + halfHeight * halfHeight);
} }
private int getComputedRadius() { private int getComputedRadius() {
if (mState.mMaxRadius >= 0) return mState.mMaxRadius; if (mState.mMaxRadius >= 0) return mState.mMaxRadius;
if (mComputedRadius >= 0) return mComputedRadius;
return (int) computeRadius(); return (int) computeRadius();
} }