Revert "Animate out bubbles in reverse of the way they animate in."
This reverts commit 90ff97ee31106f80b668d8aefda62dd671f4a21a.
Reason for revert: breaks some tests / behaviour; revert til fix
Change-Id: I40cee68dcd637d574bff4add692b3ef636e2e6f3
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
index 494c1a2..7d9bb07 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
@@ -802,32 +802,16 @@
if (mStackView == null) {
return;
}
-
if (mStatusBarStateListener.getCurrentState() == SHADE && hasBubbles()) {
// Bubbles only appear in unlocked shade
mStackView.setVisibility(hasBubbles() ? VISIBLE : INVISIBLE);
- } else if (!hasBubbles() && mStackView.hasTransientBubbles()) {
- // If we only have transient bubbles, then wait until they're gone.
- mStackView.runActionAfterTransientViewAnimations(() -> {
- mStackView.setVisibility(INVISIBLE);
- updateBubblesShowing();
- });
- } else {
+ } else if (mStackView != null) {
mStackView.setVisibility(INVISIBLE);
}
- updateBubblesShowing();
- }
-
- /**
- * Updates the status bar window controller and the state change listener with whether bubbles
- * are currently showing.
- */
- public void updateBubblesShowing() {
+ // Let listeners know if bubble state changed.
boolean hadBubbles = mStatusBarWindowController.getBubblesShowing();
- boolean hasBubblesShowing =
- (hasBubbles() || mStackView.hasTransientBubbles())
- && mStackView.getVisibility() == VISIBLE;
+ boolean hasBubblesShowing = hasBubbles() && mStackView.getVisibility() == VISIBLE;
mStatusBarWindowController.setBubblesShowing(hasBubblesShowing);
if (mStateChangeListener != null && hadBubbles != hasBubblesShowing) {
mStateChangeListener.onHasBubblesChanged(hasBubblesShowing);
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
index f3ad89f..a7100e2 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
@@ -664,10 +664,6 @@
return mIsExpanded;
}
- void runActionAfterTransientViewAnimations(Runnable after) {
- mStackAnimationController.runActionAfterAllViewsAndTransientRemoved(after);
- }
-
/**
* The {@link BubbleView} that is expanded, null if one does not exist.
*/
@@ -698,10 +694,6 @@
}
}
- boolean hasTransientBubbles() {
- return mBubbleContainer.getTransientViewCount() > 0;
- }
-
// via BubbleData.Listener
void addBubble(Bubble bubble) {
if (DEBUG_BUBBLE_STACK_VIEW) {
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java b/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java
index 6ec1e46..94d4f59 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java
@@ -144,11 +144,6 @@
*/
private boolean mFirstBubbleSpringingToTouch = false;
- /**
- * Action to run after all views, including transient views, have been removed from the layout.
- */
- @Nullable private Runnable mAfterAllViewsAndTransientRemoved = null;
-
/** Horizontal offset of bubbles in the stack. */
private float mStackOffset;
/** Diameter of the bubble icon. */
@@ -566,14 +561,6 @@
}
/**
- * Sets an action to run after all views, including transient views, have been removed from the
- * layout.
- */
- public void runActionAfterAllViewsAndTransientRemoved(Runnable action) {
- mAfterAllViewsAndTransientRemoved = action;
- }
-
- /**
* Springs the first bubble to the given final position, with the rest of the stack 'following'.
*/
protected void springFirstBubbleWithStackFollowing(
@@ -660,26 +647,13 @@
@Override
void onChildRemoved(View child, int index, Runnable finishRemoval) {
+ // Animate the removing view in the opposite direction of the stack.
+ final float xOffset = getOffsetForChainedPropertyAnimation(DynamicAnimation.TRANSLATION_X);
animationForChild(child)
- .alpha(0f,
- finishRemoval /* after */,
- () -> {
- // If this was the last transient view, run the callback.
- if (mLayout.getTransientViewCount() == 0
- && mAfterAllViewsAndTransientRemoved != null) {
-
- // If a 'real' view was added while we were animating out, don't run
- // the callback since all views haven't been removed.
- if (mLayout.getChildCount() == 0) {
- mAfterAllViewsAndTransientRemoved.run();
- }
-
- mAfterAllViewsAndTransientRemoved = null;
- }
- } /* after */)
- .scaleX(0f)
- .scaleY(0f)
- .withStiffness(ANIMATE_IN_STIFFNESS)
+ .alpha(0f, finishRemoval /* after */)
+ .scaleX(ANIMATE_IN_STARTING_SCALE)
+ .scaleY(ANIMATE_IN_STARTING_SCALE)
+ .translationX(mStackPosition.x - (-xOffset * ANIMATE_TRANSLATION_FACTOR))
.start();
if (mLayout.getChildCount() > 0) {