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

Commit 733461a7 authored by Johannes Gallmann's avatar Johannes Gallmann Committed by Android (Google) Code Review
Browse files

Merge "Polish predictive back with 3-button-nav" into main

parents 1a057690 44a8c67f
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -67,7 +67,6 @@ public class BackProgressAnimator implements DynamicAnimation.OnAnimationUpdateL
            .setStiffness(SpringForce.STIFFNESS_MEDIUM)
            .setDampingRatio(SpringForce.DAMPING_RATIO_NO_BOUNCY);
    private final SpringForce mButtonSpringForce = new SpringForce()
            .setStiffness(500)
            .setDampingRatio(SpringForce.DAMPING_RATIO_NO_BOUNCY);
    private final DynamicAnimation.OnAnimationEndListener mOnAnimationEndListener =
            (animation, canceled, value, velocity) -> {
@@ -157,6 +156,7 @@ public class BackProgressAnimator implements DynamicAnimation.OnAnimationUpdateL
                /* frameTime */ System.nanoTime() / TimeUtils.NANOS_PER_MS);
        if (predictiveBackSwipeEdgeNoneApi()) {
            if (event.getSwipeEdge() == EDGE_NONE) {
                mButtonSpringForce.setStiffness(SpringForce.STIFFNESS_LOW);
                mSpring.setSpring(mButtonSpringForce);
                mSpring.animateToFinalPosition(SCALE_FACTOR);
            } else {
@@ -228,6 +228,7 @@ public class BackProgressAnimator implements DynamicAnimation.OnAnimationUpdateL
     * @param finishCallback the callback to be invoked when the progress is reach to 0.
     */
    public void onBackCancelled(@NonNull Runnable finishCallback) {
        mButtonSpringForce.setStiffness(SpringForce.STIFFNESS_MEDIUM);
        mBackCancelledFinishRunnable = finishCallback;
        mSpring.addEndListener(mOnAnimationEndListener);
        mSpring.animateToFinalPosition(0);
+6 −1
Original line number Diff line number Diff line
@@ -58,7 +58,12 @@ fun BackAnimationSpec.Companion.createFloatingSurfaceAnimationSpec(
        val maxTranslationY = maxTranslationYByScale - maxMarginYPx
        val minScaleReversed = 1f - minScale

        val direction = if (backEvent.swipeEdge == BackEvent.EDGE_LEFT) 1 else -1
        val direction =
            when (backEvent.swipeEdge) {
                BackEvent.EDGE_LEFT -> 1
                BackEvent.EDGE_RIGHT -> -1
                else -> 0
            }
        val progressX = backEvent.progress

        val ratioTranslateX = translateXEasing.getInterpolation(progressX)
+21 −5
Original line number Diff line number Diff line
@@ -46,6 +46,11 @@ class BackAnimationSpecTest : SysuiTestCase() {
            backInput = BackInput(progressX = 1f, progressY = 0f, edge = BackEvent.EDGE_RIGHT),
            expected = BackTransformation(translateX = maxX, translateY = 0f, scale = minScale),
        )
        assertBackTransformation(
            backAnimationSpec = backAnimationSpec,
            backInput = BackInput(progressX = 1f, progressY = 0f, edge = BackEvent.EDGE_NONE),
            expected = BackTransformation(translateX = 0f, translateY = 0f, scale = minScale),
        )
        assertBackTransformation(
            backAnimationSpec = backAnimationSpec,
            backInput = BackInput(progressX = 1f, progressY = 1f, edge = BackEvent.EDGE_LEFT),
@@ -77,7 +82,7 @@ class BackAnimationSpecTest : SysuiTestCase() {
                    translateX = Float.NaN,
                    translateY = Float.NaN,
                    scale = 1f,
                    scalePivotPosition = ScalePivotPosition.BOTTOM_CENTER
                    scalePivotPosition = ScalePivotPosition.BOTTOM_CENTER,
                ),
        )
        assertBackTransformation(
@@ -88,7 +93,7 @@ class BackAnimationSpecTest : SysuiTestCase() {
                    translateX = Float.NaN,
                    translateY = Float.NaN,
                    scale = minScale,
                    scalePivotPosition = ScalePivotPosition.BOTTOM_CENTER
                    scalePivotPosition = ScalePivotPosition.BOTTOM_CENTER,
                ),
        )
        assertBackTransformation(
@@ -99,7 +104,7 @@ class BackAnimationSpecTest : SysuiTestCase() {
                    translateX = Float.NaN,
                    translateY = Float.NaN,
                    scale = minScale,
                    scalePivotPosition = ScalePivotPosition.BOTTOM_CENTER
                    scalePivotPosition = ScalePivotPosition.BOTTOM_CENTER,
                ),
        )
        assertBackTransformation(
@@ -110,7 +115,18 @@ class BackAnimationSpecTest : SysuiTestCase() {
                    translateX = Float.NaN,
                    translateY = Float.NaN,
                    scale = minScale,
                    scalePivotPosition = ScalePivotPosition.BOTTOM_CENTER
                    scalePivotPosition = ScalePivotPosition.BOTTOM_CENTER,
                ),
        )
        assertBackTransformation(
            backAnimationSpec = backAnimationSpec,
            backInput = BackInput(progressX = 1f, progressY = 1f, edge = BackEvent.EDGE_NONE),
            expected =
                BackTransformation(
                    translateX = Float.NaN,
                    translateY = Float.NaN,
                    scale = minScale,
                    scalePivotPosition = ScalePivotPosition.BOTTOM_CENTER,
                ),
        )
    }
@@ -131,7 +147,7 @@ private fun assertBackTransformation(
                /* swipeEdge = */ backInput.edge,
            ),
        progressY = backInput.progressY,
        result = actual
        result = actual,
    )

    val tolerance = 0f