From a759496b94d2059adbb3e8d13c633cf37fe6309f Mon Sep 17 00:00:00 2001 From: Rohan Shah Date: Tue, 22 May 2018 10:59:30 -0700 Subject: [PATCH] [Notif] Remove transient views on swipe out We are not removing transient views for the 'swiped out' animation. Utilizing the transient view cleanup in onAnimationFinished to handle this better. Test: Manually Bug: 79896012 Change-Id: I3c169815433e34795472264de30ff23b3d744269 --- .../statusbar/stack/NotificationStackScrollLayout.java | 10 ++++++++++ 1 file changed, 10 insertions(+) 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 dc4b697cbdbe7..5fe3c6c32388c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java @@ -3290,6 +3290,16 @@ public class NotificationStackScrollLayout extends ViewGroup if (!childWasSwipedOut) { Rect clipBounds = child.getClipBounds(); childWasSwipedOut = clipBounds != null && clipBounds.height() == 0; + + if (childWasSwipedOut && child instanceof ExpandableView) { + // Clean up any potential transient views if the child has already been swiped + // out, as we won't be animating it further (due to its height already being + // clipped to 0. + ViewGroup transientContainer = ((ExpandableView) child).getTransientContainer(); + if (transientContainer != null) { + transientContainer.removeTransientView(child); + } + } } int animationType = childWasSwipedOut ? AnimationEvent.ANIMATION_TYPE_REMOVE_SWIPED_OUT