Ripple radius bug

Fixes: b/183912412
Test: manual test
Change-Id: I9bf3a32f2f983eb6d837e1e51d6feb1845564d22
diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java
index 8b8cbbc..0865332 100644
--- a/graphics/java/android/graphics/drawable/RippleDrawable.java
+++ b/graphics/java/android/graphics/drawable/RippleDrawable.java
@@ -180,6 +180,7 @@
     private Matrix mMaskMatrix;
     private PorterDuffColorFilter mMaskColorFilter;
     private boolean mHasValidMask;
+    private int mComputedRadius = -1;
 
     /** The current ripple. May be actively animating or pending entry. */
     private RippleForeground mRipple;
@@ -385,9 +386,7 @@
             mRipple.onBoundsChange();
         }
 
-        mState.mMaxRadius = mState.mMaxRadius <= 0 && mState.mRippleStyle != STYLE_SOLID
-                ? (int) computeRadius()
-                : mState.mMaxRadius;
+        mComputedRadius = Math.round(computeRadius());
         invalidateSelf();
     }
 
@@ -918,7 +917,7 @@
             ColorFilter origFilter = p.getColorFilter();
             p.setColorFilter(mMaskColorFilter);
             p.setAlpha(alpha);
-            c.drawCircle(cx, cy, mState.mMaxRadius, p);
+            c.drawCircle(cx, cy, getComputedRadius(), p);
             p.setAlpha(origAlpha);
             p.setColorFilter(origFilter);
         }
@@ -930,11 +929,17 @@
         return radius;
     }
 
+    private int getComputedRadius() {
+        if (mState.mMaxRadius >= 0) return mState.mMaxRadius;
+        if (mComputedRadius >= 0) return mComputedRadius;
+        return (int) computeRadius();
+    }
+
     @NonNull
     private RippleAnimationSession.AnimationProperties<Float, Paint> createAnimationProperties(
             float x, float y, float cx, float cy, float w, float h) {
         Paint p = new Paint(mRipplePaint);
-        float radius = mState.mMaxRadius;
+        float radius = getComputedRadius();
         RippleAnimationSession.AnimationProperties<Float, Paint> properties;
         RippleShader shader = new RippleShader();
         int color = mMaskColorFilter == null