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

Commit 0f436116 authored by Jon Miranda's avatar Jon Miranda Committed by Automerger Merge Worker
Browse files

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

parents 94a6313b cbe578b2
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.
     */