From 29f8585965377a1b002097986f58121ef23d6d18 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Thu, 19 Sep 2019 16:43:33 -0700 Subject: [PATCH] Fixed an issue where the notification icons could overlap the clock Because we were cancelling an animation but never reseting the translation we could be stuck in weird transition states. Fixes: 136117476 Test: lock and unlock quickly with overlapping animations, observe no overlap Change-Id: Iee389fa77588289417d0e3e5bdc31aeda1aac58a --- .../phone/NotificationIconAreaController.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java index ba3406999388a..1a3560ece1d7f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java @@ -537,11 +537,7 @@ public class NotificationIconAreaController implements DarkReceiver, if (dozeParameters.shouldControlScreenOff()) { mAodIcons.setTranslationY(-mAodIconAppearTranslation); mAodIcons.setAlpha(0); - mAodIcons.animate() - .setInterpolator(Interpolators.DECELERATE_QUINT) - .translationY(0) - .setDuration(AOD_ICONS_APPEAR_DURATION) - .start(); + animateInAodIconTranslation(); mAodIcons.animate() .alpha(1) .setInterpolator(Interpolators.LINEAR) @@ -550,6 +546,14 @@ public class NotificationIconAreaController implements DarkReceiver, } } + private void animateInAodIconTranslation() { + mAodIcons.animate() + .setInterpolator(Interpolators.DECELERATE_QUINT) + .translationY(0) + .setDuration(AOD_ICONS_APPEAR_DURATION) + .start(); + } + private void reloadAodColor() { mAodIconTint = Utils.getColorAttrDefaultColor(mContext, R.attr.wallpaperTextColor); @@ -606,14 +610,19 @@ public class NotificationIconAreaController implements DarkReceiver, mAodIcons.setAlpha(1.0f); appearAodIcons(); } else { + // Let's make sure the icon are translated to 0, since we cancelled it above + animateInAodIconTranslation(); // We were fading out, let's fade in instead CrossFadeHelper.fadeIn(mAodIcons); } } else { + // Let's make sure the icon are translated to 0, since we cancelled it above + animateInAodIconTranslation(); CrossFadeHelper.fadeOut(mAodIcons); } } else { mAodIcons.setAlpha(1.0f); + mAodIcons.setTranslationY(0); mAodIcons.setVisibility(visible ? View.VISIBLE : View.INVISIBLE); } }