diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleFlyoutView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleFlyoutView.java index 2fc696cda7580..35a4f33ecf723 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleFlyoutView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleFlyoutView.java @@ -231,7 +231,8 @@ public class BubbleFlyoutView extends FrameLayout { * Fade animation for consecutive flyouts. */ void animateUpdate(Bubble.FlyoutMessage flyoutMessage, float parentWidth, PointF stackPos, - boolean hideDot) { + boolean hideDot, Runnable onHide) { + mOnHide = onHide; final Runnable afterFadeOut = () -> { updateFlyoutMessage(flyoutMessage, parentWidth); // Wait for TextViews to layout with updated height. diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java index d821c6ff7cd17..8613dcbda8728 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java @@ -1492,22 +1492,22 @@ public class BubbleStackView extends FrameLayout mStackAnimationController.setStackPosition(mPositioner.getDefaultStartPosition()); } - if (getBubbleCount() == 0) { - mStackOnLeftOrWillBe = mStackAnimationController.isStackOnLeftSide(); - } - if (bubble.getIconView() == null) { return; } + mBubbleContainer.addView(bubble.getIconView(), 0, + new FrameLayout.LayoutParams(mPositioner.getBubbleSize(), + mPositioner.getBubbleSize())); + + if (getBubbleCount() == 0) { + mStackOnLeftOrWillBe = mStackAnimationController.isStackOnLeftSide(); + } // Set the dot position to the opposite of the side the stack is resting on, since the stack // resting slightly off-screen would result in the dot also being off-screen. bubble.getIconView().setDotBadgeOnLeft(!mStackOnLeftOrWillBe /* onLeft */); bubble.getIconView().setOnClickListener(mBubbleClickListener); bubble.getIconView().setOnTouchListener(mBubbleTouchListener); - mBubbleContainer.addView(bubble.getIconView(), 0, - new FrameLayout.LayoutParams(mPositioner.getBubbleSize(), - mPositioner.getBubbleSize())); updateBubbleShadows(false /* showForAllBubbles */); animateInFlyoutForBubble(bubble); requestUpdate(); @@ -2400,7 +2400,8 @@ public class BubbleStackView extends FrameLayout if (mFlyout.getVisibility() == View.VISIBLE) { mFlyout.animateUpdate(bubble.getFlyoutMessage(), getWidth(), - mStackAnimationController.getStackPosition(), !bubble.showDot()); + mStackAnimationController.getStackPosition(), !bubble.showDot(), + mAfterFlyoutHidden /* onHide */); } else { mFlyout.setVisibility(INVISIBLE); mFlyout.setupFlyoutStartingAsDot(bubble.getFlyoutMessage(), @@ -2408,7 +2409,7 @@ public class BubbleStackView extends FrameLayout mStackAnimationController.isStackOnLeftSide(), bubble.getIconView().getDotColor() /* dotColor */, expandFlyoutAfterDelay /* onLayoutComplete */, - mAfterFlyoutHidden, + mAfterFlyoutHidden /* onHide */, bubble.getIconView().getDotCenter(), !bubble.showDot(), mPositioner); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java index 8043d2b8b2f92..12d55b85fac6a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java @@ -124,9 +124,6 @@ public class StackAnimationController extends */ private Rect mAnimatingToBounds = new Rect(); - /** Initial starting location for the stack. */ - @Nullable private BubbleStackView.RelativeStackPosition mStackStartPosition; - /** Whether or not the stack's start position has been set. */ private boolean mStackMovedToStartPosition = false;