From 723f1f996fd78f08e5e91ed57420bd431e11f903 Mon Sep 17 00:00:00 2001 From: Mady Mellor Date: Sun, 13 Mar 2016 15:54:06 -0700 Subject: [PATCH] Clean up animation listener when translating notification The listener only needs to be added to one of the translating views but was added to all of them, this CL changes it to add to the listener to the first view. This CL also handles cancelling the animation. Change-Id: Ifda0f7f04bae1608250e9d2f008b4f21c1745bc6 --- .../statusbar/ExpandableNotificationRow.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java index 93cb952b1eb75..246f15ee196a8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java @@ -745,6 +745,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { public Animator getTranslateViewAnimator(final float leftTarget, AnimatorUpdateListener listener) { + if (mTranslateAnim != null) { + mTranslateAnim.cancel(); + } if (areGutsExposed()) { // No translation if guts are exposed. return null; @@ -769,19 +772,27 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { if (listener != null) { translateAnim.addUpdateListener(listener); } - } - translateAnim.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator anim) { - if (mSettingsIconRow != null && leftTarget == 0) { - mSettingsIconRow.resetState(); + translateAnim.addListener(new AnimatorListenerAdapter() { + boolean cancelled = false; + + @Override + public void onAnimationCancel(Animator anim) { + cancelled = true; } - mTranslateAnim = null; - } - }); + + @Override + public void onAnimationEnd(Animator anim) { + if (!cancelled && mSettingsIconRow != null && leftTarget == 0) { + mSettingsIconRow.resetState(); + mTranslateAnim = null; + } + } + }); + } set.play(translateAnim); } } + mTranslateAnim = set; return set; }