From dc936201153913359424d412811c3cc8b0e7cd41 Mon Sep 17 00:00:00 2001 From: George Mount Date: Thu, 20 Apr 2017 09:10:07 -0700 Subject: [PATCH] Fix ChangeClipBounds to set final clip to null. Bug 35227753 ChangeClipBounds wasn't setting the final clip to null after its transition if the end clip was supposed to be null. Test: I9089e0c84718d219cfda266a99fd3dffdbae8512 Change-Id: If928454b30807ccc6b34ed4dfbb14857d99d43be --- .../java/android/transition/ChangeClipBounds.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/core/java/android/transition/ChangeClipBounds.java b/core/java/android/transition/ChangeClipBounds.java index 8d0943c504301..a6398d3faeb76 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; } }