Fix dot & badge being on correct side for the first bubble added

* stackAnimationController#isStackOnLeftSide depends on the position
  being set which happens when a view gets added so we should add
  the view & then set mStackOnLeftOrWillBe
* removed unused code

Test: manual 1) have no bubbles
             2) add a bubble (needs to be on left side -- this is
                the default unless you've placed the stack on right
                side beforehand)
             => observe that the update dot & badge are on the right
                hand side of the bubble
Bug: 185438888
Change-Id: I6129aff7c352fad8d29a6c243549f0d3580d62c8
This commit is contained in:
Mady Mellor
2021-06-03 12:26:08 -07:00
parent dd6674033d
commit 305cfd2683
2 changed files with 7 additions and 10 deletions

View File

@@ -1497,22 +1497,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();

View File

@@ -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;