diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java
index fe80b58..1651a8c 100644
--- a/graphics/java/android/graphics/drawable/RippleDrawable.java
+++ b/graphics/java/android/graphics/drawable/RippleDrawable.java
@@ -221,6 +221,7 @@
     private boolean mForceSoftware;
 
     // Patterned
+    private boolean mAddRipple = false;
     private float mTargetBackgroundOpacity;
     private ValueAnimator mBackgroundAnimation;
     private float mBackgroundOpacity;
@@ -716,6 +717,7 @@
         }
 
         cancelExitingRipples();
+        exitPatternedAnimation();
     }
 
     @Override
@@ -807,7 +809,7 @@
     }
 
     private void startPatternedAnimation() {
-        mRippleActive = true;
+        mAddRipple = true;
         invalidateSelf(false);
     }
 
@@ -862,17 +864,17 @@
             h = bounds.height();
             w = bounds.width();
         }
-        boolean shouldAnimate = mRippleActive;
+        boolean addRipple = mAddRipple;
         boolean shouldExit = mExitingAnimation;
-        mRippleActive = false;
         mExitingAnimation = false;
-        if (mRunningAnimations.size() > 0 && !shouldAnimate) {
+        mAddRipple = false;
+        if (mRunningAnimations.size() > 0 && !addRipple) {
             // update paint when view is invalidated
             getRipplePaint();
         }
         drawContent(canvas);
         drawPatternedBackground(canvas, cx, cy);
-        if (shouldAnimate && mRunningAnimations.size() <= MAX_RIPPLES) {
+        if (addRipple && mRunningAnimations.size() <= MAX_RIPPLES) {
             RippleAnimationSession.AnimationProperties<Float, Paint> properties =
                     createAnimationProperties(x, y, cx, cy, w, h);
             mRunningAnimations.add(new RippleAnimationSession(properties, !useCanvasProps)
