diff options
| author | 2020-03-16 21:35:01 +0000 | |
|---|---|---|
| committer | 2020-03-16 21:35:01 +0000 | |
| commit | e3b51569232b879c434fbd9e6ebcc585e9c015d4 (patch) | |
| tree | 1d3ca059922618d8879abcd302aef86b59f67bfb | |
| parent | 5f3d66bf305ea8485c90595c689d2f7b539e6558 (diff) | |
| parent | 259c66b8b05c45cb7558c36eba5227fbdd5758ca (diff) | |
Merge "Don't count overflow bubble in onChildAdded/Removed." into rvc-dev
3 files changed, 30 insertions, 7 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java index 0778d5b54493..e666fb5f1af9 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java @@ -471,7 +471,8 @@ public class BubbleStackView extends FrameLayout { mExpandedViewPadding = res.getDimensionPixelSize(R.dimen.bubble_expanded_view_padding); int elevation = res.getDimensionPixelSize(R.dimen.bubble_elevation); - mStackAnimationController = new StackAnimationController(floatingContentCoordinator); + mStackAnimationController = new StackAnimationController( + floatingContentCoordinator, this::getBubbleCount); mExpandedAnimationController = new ExpandedAnimationController( mDisplaySize, mExpandedViewPadding, res.getConfiguration().orientation); 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 86387f1cc546..b63ba6fe5d14 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java @@ -43,6 +43,7 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.HashMap; import java.util.Set; +import java.util.function.IntSupplier; /** * Animation controller for bubbles when they're in their stacked state. Stacked bubbles sit atop @@ -241,9 +242,15 @@ public class StackAnimationController extends } }; + /** Returns the number of 'real' bubbles (excluding the overflow bubble). */ + private IntSupplier mBubbleCountSupplier; + public StackAnimationController( - FloatingContentCoordinator floatingContentCoordinator) { + FloatingContentCoordinator floatingContentCoordinator, + IntSupplier bubbleCountSupplier) { mFloatingContentCoordinator = floatingContentCoordinator; + mBubbleCountSupplier = bubbleCountSupplier; + } /** @@ -669,6 +676,8 @@ public class StackAnimationController extends new SpringAnimation(this, firstBubbleProperty) .setSpring(spring) .addEndListener((dynamicAnimation, b, v, v1) -> { + mRestingStackPosition.set(mStackPosition); + if (after != null) { for (Runnable callback : after) { callback.run(); @@ -736,7 +745,7 @@ public class StackAnimationController extends return; } - if (mLayout.getChildCount() == 1) { + if (getBubbleCount() == 1) { // If this is the first child added, position the stack in its starting position. moveStackToStartPosition(); } else if (isStackPositionSet() && mLayout.indexOfChild(child) == 0) { @@ -758,7 +767,7 @@ public class StackAnimationController extends .start(); // If there are other bubbles, pull them into the correct position. - if (mLayout.getChildCount() > 0) { + if (getBubbleCount() > 0) { animationForChildAtIndex(0).translationX(mStackPosition.x).start(); } else { // When all children are removed ensure stack position is sane @@ -979,6 +988,11 @@ public class StackAnimationController extends return mMagnetizedStack; } + /** Returns the number of 'real' bubbles (excluding overflow). */ + private int getBubbleCount() { + return mBubbleCountSupplier.getAsInt(); + } + /** * FloatProperty that uses {@link #moveFirstBubbleWithStackFollowing} to set the first bubble's * translation and animate the rest of the stack with it. A DynamicAnimation can animate this diff --git a/packages/SystemUI/tests/src/com/android/systemui/bubbles/animation/StackAnimationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/bubbles/animation/StackAnimationControllerTest.java index e3187cb9a6c5..b1ac022dbe9c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/bubbles/animation/StackAnimationControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/bubbles/animation/StackAnimationControllerTest.java @@ -43,6 +43,7 @@ import org.mockito.Mock; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; +import java.util.function.IntSupplier; @SmallTest @RunWith(AndroidTestingRunner.class) @@ -59,7 +60,13 @@ public class StackAnimationControllerTest extends PhysicsAnimationLayoutTestCase @Before public void setUp() throws Exception { super.setUp(); - mStackController = spy(new TestableStackController(mFloatingContentCoordinator)); + mStackController = spy(new TestableStackController( + mFloatingContentCoordinator, new IntSupplier() { + @Override + public int getAsInt() { + return mLayout.getChildCount(); + } + })); mLayout.setActiveController(mStackController); addOneMoreThanBubbleLimitBubbles(); mStackOffset = mLayout.getResources().getDimensionPixelSize(R.dimen.bubble_stack_offset); @@ -295,8 +302,9 @@ public class StackAnimationControllerTest extends PhysicsAnimationLayoutTestCase */ private class TestableStackController extends StackAnimationController { TestableStackController( - FloatingContentCoordinator floatingContentCoordinator) { - super(floatingContentCoordinator); + FloatingContentCoordinator floatingContentCoordinator, + IntSupplier bubbleCountSupplier) { + super(floatingContentCoordinator, bubbleCountSupplier); } @Override |