Merge "Update the flyout collapsed position" into main

This commit is contained in:
Liran Binyamin
2024-11-01 20:08:07 +00:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 13 deletions
@@ -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()
}
@@ -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