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

Commit cbe578b2 authored by Jon Miranda's avatar Jon Miranda Committed by Android (Google) Code Review
Browse files

Merge "Fix spring not springing when unstashing." into tm-qpr-dev

parents 43700f61 59452265
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -553,12 +553,16 @@ public class TaskbarLauncherStateController {
            animatorSet.play(stashAnimator);
        }

        if (isAnimatingToLauncher() || mLauncherState == LauncherState.NORMAL) {
        // Translate back to 0 at a shorter or same duration as the icon alignment animation.
        // This ensures there is no jump after switching to hotseat, e.g. when swiping up from
            // overview to home. Currently we do duration / 2 just to make it feel snappier.
        // overview to home. When not in app, we do duration / 2 just to make it feel snappier.
        long resetDuration = mControllers.taskbarStashController.isInApp()
                ? duration
                : duration / 2;
        if (!mControllers.taskbarTranslationController.willAnimateToZeroBefore(resetDuration)
                && (isAnimatingToLauncher() || mLauncherState == LauncherState.NORMAL)) {
            animatorSet.play(mControllers.taskbarTranslationController
                    .createAnimToResetTranslation(duration / 2));
                    .createAnimToResetTranslation(resetDuration));
        }
    }

+15 −0
Original line number Diff line number Diff line
@@ -133,6 +133,21 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable
        return mCallback;
    }

    /**
     * Returns true if we will animate to zero before the input duration.
     */
    public boolean willAnimateToZeroBefore(long duration) {
        if (mSpringBounce != null && mSpringBounce.isRunning()) {
            long springDuration = mSpringBounce.getDuration();
            long current = mSpringBounce.getCurrentPlayTime();
            return (springDuration - current < duration);
        }
        if (mTranslationYForSwipe.isAnimatingToValue(0)) {
            return mTranslationYForSwipe.getRemainingTime() < duration;
        }
        return false;
    }

    /**
     * Returns an animation to reset the taskbar translation to {@code 0}.
     */
+9 −0
Original line number Diff line number Diff line
@@ -132,6 +132,15 @@ public class AnimatedFloat {
        return isAnimating() && mEndValue != null && mEndValue == endValue;
    }

    /**
     * Returns the remaining time of the existing animation (if any).
     */
    public long getRemainingTime() {
        return isAnimating() && mValueAnimator.isRunning()
                ? Math.max(0, mValueAnimator.getDuration() - mValueAnimator.getCurrentPlayTime())
                : 0;
    }

    /**
     * Returns whether we are currently not animating, and the animation's value matches the given.
     */