From 345cb6fec2d004fd6a57cda706cb4a170ab94d8a Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Fri, 29 Oct 2021 20:00:03 +0200 Subject: [PATCH] Made usages of animate().setListener() call safer Because those listeners persist, they could have negative consequences for future animate() calls. Fixes: 204559512 Test: manual Change-Id: Ib07bf42c077e7c094d060bc9be9b790ddefacdc9 --- .../systemui/globalactions/GlobalActionsDialogLite.java | 3 ++- .../systemui/media/dialog/MediaOutputBaseAdapter.java | 9 +++++++++ .../SystemUI/src/com/android/systemui/qs/QSFragment.java | 2 ++ .../systemui/statusbar/KeyguardIndicationController.java | 3 +++ .../statusbar/phone/LightsOutNotifController.java | 3 +++ .../android/systemui/statusbar/phone/SettingsButton.java | 3 +++ 6 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java index b06b024a63a46..e91f671601c16 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java @@ -2368,7 +2368,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene message.animate() .alpha(0f) .setDuration(TOAST_FADE_TIME) - .setStartDelay(visibleTime); + .setStartDelay(visibleTime) + .setListener(null); } }); } diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java index 868193b447040..54e40f1429be8 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java @@ -289,6 +289,9 @@ public abstract class MediaOutputBaseAdapter extends public void onAnimationEnd(Animator animation) { to.requireViewById(R.id.volume_indeterminate_progress).setVisibility( View.VISIBLE); + // Unset the listener, otherwise this may persist for another view + // property animation + toTitleText.animate().setListener(null); } }); // Animation for seek bar @@ -312,8 +315,14 @@ public abstract class MediaOutputBaseAdapter extends public void onAnimationEnd(Animator animation) { mIsAnimating = false; notifyDataSetChanged(); + // Unset the listener, otherwise this may persist for + // another view property animation + fromTitleText.animate().setListener(null); } }); + // Unset the listener, otherwise this may persist for another view + // property animation + fromSeekBar.animate().setListener(null); } }); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java index 89bbcf5053a0a..0a9adb0625d30 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java @@ -745,6 +745,8 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca public void onAnimationEnd(Animator animation) { mHeaderAnimating = false; updateQsState(); + // Unset the listener, otherwise this may persist for another view property animation + getView().animate().setListener(null); } }; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java index 74ebfe5ad5e41..bda97094bc5d0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java @@ -716,6 +716,9 @@ public class KeyguardIndicationController { textView.setTranslationY(BOUNCE_ANIMATION_FINAL_Y); ViewClippingUtil.setClippingDeactivated(textView, false, mClippingParams); + // Unset the listener, otherwise this may persist for + // another view property animation + textView.animate().setListener(null); } }); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java index 3f3328172e128..68ab07798520f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java @@ -124,6 +124,9 @@ public class LightsOutNotifController { public void onAnimationEnd(Animator a) { mLightsOutNotifView.setAlpha(showDot ? 1 : 0); mLightsOutNotifView.setVisibility(showDot ? View.VISIBLE : View.GONE); + // Unset the listener, otherwise this may persist for + // another view property animation + mLightsOutNotifView.animate().setListener(null); } }) .start(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsButton.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsButton.java index 9cefded723650..bf5467716910a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsButton.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsButton.java @@ -120,6 +120,9 @@ public class SettingsButton extends AlphaOptimizedImageButton { setAlpha(1f); setTranslationX(0); cancelLongClick(); + // Unset the listener, otherwise this may persist for + // another view property animation + animate().setListener(null); } @Override