summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/transition/ChangeClipBounds.java15
1 files changed, 14 insertions, 1 deletions
diff --git a/core/java/android/transition/ChangeClipBounds.java b/core/java/android/transition/ChangeClipBounds.java
index 8d0943c50430..a6398d3faeb7 100644
--- a/core/java/android/transition/ChangeClipBounds.java
+++ b/core/java/android/transition/ChangeClipBounds.java
@@ -16,6 +16,7 @@
package android.transition;
import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.RectEvaluator;
import android.content.Context;
@@ -84,6 +85,7 @@ public class ChangeClipBounds extends Transition {
}
Rect start = (Rect) startValues.values.get(PROPNAME_CLIP);
Rect end = (Rect) endValues.values.get(PROPNAME_CLIP);
+ boolean endIsNull = end == null;
if (start == null && end == null) {
return null; // No animation required since there is no clip.
}
@@ -99,6 +101,17 @@ public class ChangeClipBounds extends Transition {
endValues.view.setClipBounds(start);
RectEvaluator evaluator = new RectEvaluator(new Rect());
- return ObjectAnimator.ofObject(endValues.view, "clipBounds", evaluator, start, end);
+ ObjectAnimator animator =
+ ObjectAnimator.ofObject(endValues.view, "clipBounds", evaluator, start, end);
+ if (endIsNull) {
+ final View endView = endValues.view;
+ animator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ endView.setClipBounds(null);
+ }
+ });
+ }
+ return animator;
}
}