Loading quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +9 −5 Original line number Diff line number Diff line Loading @@ -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)); } } Loading quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java +15 −0 Original line number Diff line number Diff line Loading @@ -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}. */ Loading src/com/android/launcher3/anim/AnimatedFloat.java +9 −0 Original line number Diff line number Diff line Loading @@ -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. */ Loading Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +9 −5 Original line number Diff line number Diff line Loading @@ -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)); } } Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java +15 −0 Original line number Diff line number Diff line Loading @@ -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}. */ Loading
src/com/android/launcher3/anim/AnimatedFloat.java +9 −0 Original line number Diff line number Diff line Loading @@ -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. */ Loading