From 8f93763cf0f4b3c41f6b0ecac09b621eb0ca328b Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Fri, 5 Jun 2015 15:22:42 +0200 Subject: Children which are removed when HUNd now animate out Bug: 21652976 Change-Id: I7754cbc059e31e57b7b64ea4da7c6ccd9c8c7f04 --- .../systemui/statusbar/stack/StackStateAnimator.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'packages/SystemUI/src') diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java index eac5e79..c31244c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java @@ -96,6 +96,7 @@ public class StackStateAnimator { private ExpandableNotificationRow mChildExpandingView; private int mHeadsUpAppearHeightBottom; private boolean mShadeExpanded; + private ArrayList mChildrenToClearFromOverlay = new ArrayList<>(); public StackStateAnimator(NotificationStackScrollLayout hostLayout) { mHostLayout = hostLayout; @@ -794,6 +795,10 @@ public class StackStateAnimator { private void onAnimationFinished() { mHostLayout.onChildAnimationFinished(); + for (View v : mChildrenToClearFromOverlay) { + mHostLayout.getOverlay().remove(v); + } + mChildrenToClearFromOverlay.clear(); } /** @@ -880,8 +885,20 @@ public class StackStateAnimator { finalState.applyState(changingView, mTmpState); } else if (event.animationType == NotificationStackScrollLayout .AnimationEvent.ANIMATION_TYPE_HEADS_UP_DISAPPEAR) { - // This item is added, initialize it's properties. mHeadsUpDisappearChildren.add(changingView); + if (mHostLayout.indexOfChild(changingView) == -1) { + // This notification was actually removed, so we need to add it to the overlay + mHostLayout.getOverlay().add(changingView); + ViewState viewState = new ViewState(); + viewState.initFrom(changingView); + viewState.yTranslation = -changingView.getActualHeight(); + // We temporarily enable Y animations, the real filter will be combined + // afterwards anyway + mAnimationFilter.animateY = true; + startViewAnimations(changingView, viewState, 0, + ANIMATION_DURATION_HEADS_UP_DISAPPEAR); + mChildrenToClearFromOverlay.add(changingView); + } } mNewEvents.add(event); } -- cgit v1.1