Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6563429e authored by Liran Binyamin's avatar Liran Binyamin
Browse files

Update the flyout collapsed position

This change ensures that we're updating the distance to the flyout's
collapsed position before we start collapsing it. The distance is
initially calculated before we start expanding, but when a new bubble
is added while we're fully expanded, and if we previously had 1
bubble and now have 2, the collapsed position changed, so we need to
update it before we start collapsing.

Flag: com.android.wm.shell.enable_bubble_bar
Bug: 376276297
Test: manual
      - dismiss all bubbles
      - create 1 bubble
      - after the flyout is fully expanded create a second bubble
      - observe the flyout is updated with the contents of the second
        bubble
      - observe when the flyout collapses, it collapses to the dot
        on the second bubble
Change-Id: I219886fd6463d69692d9945d901d1f3ad3cb26a0
parent 0e8093ae
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -164,7 +164,15 @@ constructor(
                    flyout.updateExpansionProgress(animator.animatedValue as Float)
                }
        }
        animator.addListener(onStart = { flyout.setOnClickListener(null) }, onEnd = { endAction() })
        animator.addListener(
            onStart = {
                flyout.setOnClickListener(null)
                if (animationType == AnimationType.MORPH) {
                    flyout.updateTranslationToCollapsedPosition()
                }
            },
            onEnd = { endAction() },
        )
        animator.start()
    }

+18 −12
Original line number Diff line number Diff line
@@ -192,18 +192,8 @@ class BubbleBarFlyoutView(
        title.alpha = 0f
        message.alpha = 0f
        setData(flyoutMessage)
        val txToCollapsedPosition =
            if (positioner.isOnLeft) {
                positioner.distanceToCollapsedPosition.x
            } else {
                -positioner.distanceToCollapsedPosition.x
            }
        // TODO: b/277815200 - before collapsing, recalculate translationToCollapsedPosition because
        // the collapsed position may have changed
        val tyToCollapsedPosition =
            positioner.distanceToCollapsedPosition.y + triangleHeight - triangleOverlap
        translationToCollapsedPosition = PointF(txToCollapsedPosition, tyToCollapsedPosition)

        updateTranslationToCollapsedPosition()
        collapsedSize = positioner.collapsedSize
        collapsedCornerRadius = collapsedSize / 2
        collapsedColor = positioner.collapsedColor
@@ -212,7 +202,7 @@ class BubbleBarFlyoutView(
        // calculate the expansion progress required before we start showing the triangle as part of
        // the expansion animation
        minExpansionProgressForTriangle =
            positioner.distanceToRevealTriangle / tyToCollapsedPosition
            positioner.distanceToRevealTriangle / translationToCollapsedPosition.y

        // post the request to start the expand animation to the looper so the view can measure
        // itself
@@ -259,6 +249,22 @@ class BubbleBarFlyoutView(
        message.text = flyoutMessage.message
    }

    /**
     * This should be called to update [translationToCollapsedPosition] before we start expanding or
     * collapsing to make sure that we're animating the flyout to and from the correct position.
     */
    fun updateTranslationToCollapsedPosition() {
        val txToCollapsedPosition =
            if (positioner.isOnLeft) {
                positioner.distanceToCollapsedPosition.x
            } else {
                -positioner.distanceToCollapsedPosition.x
            }
        val tyToCollapsedPosition =
            positioner.distanceToCollapsedPosition.y + triangleHeight - triangleOverlap
        translationToCollapsedPosition = PointF(txToCollapsedPosition, tyToCollapsedPosition)
    }

    /** Updates the flyout view with the progress of the animation. */
    fun updateExpansionProgress(fraction: Float) {
        expansionProgress = fraction