From 5105204d26ffef082e857bf2c22da65f29afdeb2 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Tue, 4 Jul 2017 12:07:55 +0200 Subject: [PATCH] Fixed the clear all animation on the locked shade The notifications were also performing a removal animation even though they were swiped out, which is not needed at all. Also notifications that were clipped off on the top performed an animation even though they shouldn't have. Test: manual, on the shade locked clear all, observe smooth animations Change-Id: I26c99a1fb48ea7b22e3710a744702af70db32b42 Fixes: 36590278 --- .../stack/NotificationStackScrollLayout.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java index cbd315b940f3c..e520d19e151a3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java @@ -2587,9 +2587,6 @@ public class NotificationStackScrollLayout extends ViewGroup } updateAnimationState(false, child); - // Make sure the clipRect we might have set is removed - expandableView.setClipTopAmount(0); - focusNextViewIfFocused(child); } @@ -3036,10 +3033,6 @@ public class NotificationStackScrollLayout extends ViewGroup private void generateChildRemovalEvents() { for (View child : mChildrenToRemoveAnimated) { boolean childWasSwipedOut = mSwipedOutViews.contains(child); - int animationType = childWasSwipedOut - ? AnimationEvent.ANIMATION_TYPE_REMOVE_SWIPED_OUT - : AnimationEvent.ANIMATION_TYPE_REMOVE; - AnimationEvent event = new AnimationEvent(child, animationType); // we need to know the view after this one float removedTranslation = child.getTranslationY(); @@ -3050,7 +3043,16 @@ public class NotificationStackScrollLayout extends ViewGroup removedTranslation = row.getTranslationWhenRemoved(); ignoreChildren = false; } + childWasSwipedOut |= Math.abs(row.getTranslation()) == row.getWidth(); } + if (!childWasSwipedOut) { + Rect clipBounds = child.getClipBounds(); + childWasSwipedOut = clipBounds.height() == 0; + } + int animationType = childWasSwipedOut + ? AnimationEvent.ANIMATION_TYPE_REMOVE_SWIPED_OUT + : AnimationEvent.ANIMATION_TYPE_REMOVE; + AnimationEvent event = new AnimationEvent(child, animationType); event.viewAfterChangingView = getFirstChildBelowTranlsationY(removedTranslation, ignoreChildren); mAnimationEvents.add(event);