Improves pointer positioning & remove no-op when expanding

Fixes: 123568424
Bug: 123022982
Test: manual / visual - expand bubbles, tap through them, remove bubbles
      and make sure arrow jumps to next one

Change-Id: I770c3f868f2bd6c0b4af773c707bb40d0dcffeb7
This commit is contained in:
Mady Mellor
2019-01-29 14:15:34 -08:00
parent 0b409e8cc0
commit de2d4d2164

View File

@@ -236,14 +236,14 @@ public class BubbleStackView extends FrameLayout implements BubbleTouchHandler.F
*/
public void setExpandedBubble(BubbleView bubbleToExpand) {
mExpandedBubble = bubbleToExpand;
boolean prevExpanded = mIsExpanded;
mIsExpanded = true;
if (!prevExpanded) {
if (!mIsExpanded) {
// If we weren't previously expanded we should animate open.
animateExpansion(true /* expand */);
} else {
// If we were expanded just update the views
// Otherwise just update the views
// TODO: probably animate / page to expanded one
updateExpandedBubble();
updatePointerPosition();
requestUpdate();
}
mExpandedBubble.getEntry().setShowInShadeWhenBubble(false);
@@ -385,7 +385,6 @@ public class BubbleStackView extends FrameLayout implements BubbleTouchHandler.F
mIsExpanded = shouldExpand;
updateExpandedBubble();
applyCurrentState();
//requestUpdate();
mIsAnimating = true;
@@ -398,7 +397,10 @@ public class BubbleStackView extends FrameLayout implements BubbleTouchHandler.F
if (shouldExpand) {
mBubbleContainer.setController(mExpandedAnimationController);
mExpandedAnimationController.expandFromStack(
mStackAnimationController.getStackPosition(), updateAfter);
mStackAnimationController.getStackPosition(), () -> {
updatePointerPosition();
updateAfter.run();
});
} else {
mBubbleContainer.cancelAllAnimations();
mExpandedAnimationController.collapseBackToStack(
@@ -647,10 +649,7 @@ public class BubbleStackView extends FrameLayout implements BubbleTouchHandler.F
}
// Bubble with notification as expanded state doesn't need a header / title
mExpandedViewContainer.setHeaderText(null);
}
float pointerPosition = mExpandedBubble.getPosition().x + (mExpandedBubble.getWidth() / 2);
mExpandedViewContainer.setPointerPosition((int) pointerPosition);
}
private void applyCurrentState() {
@@ -677,6 +676,14 @@ public class BubbleStackView extends FrameLayout implements BubbleTouchHandler.F
}
}
private void updatePointerPosition() {
if (mExpandedBubble != null) {
float pointerPosition = mExpandedBubble.getPosition().x
+ (mExpandedBubble.getWidth() / 2f);
mExpandedViewContainer.setPointerPosition((int) pointerPosition);
}
}
private void applyRowState(ExpandableNotificationRow view) {
view.reset();
view.setHeadsUp(false);