diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 375ed7835a..ac2c44ba27 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -198,15 +198,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { */ public Animator createAnimToLauncher(@NonNull LauncherState toState, @NonNull RecentsAnimationCallbacks callbacks, long duration) { - AnimatorSet set = new AnimatorSet(); - Animator taskbarState = mTaskbarLauncherStateController - .createAnimToLauncher(toState, callbacks, duration); - long halfDuration = Math.round(duration * 0.5f); - Animator translation = - mControllers.taskbarTranslationController.createAnimToLauncher(halfDuration); - - set.playTogether(taskbarState, translation); - return set; + return mTaskbarLauncherStateController.createAnimToLauncher(toState, callbacks, duration); } public boolean isDraggingItem() { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index 7456c8e91f..5ac0570b29 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -433,6 +433,14 @@ import java.util.StringJoiner; }); 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. + animatorSet.play(mControllers.taskbarTranslationController + .createAnimToResetTranslation(duration / 2)); + } } private boolean isInLauncher() { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java index a6b2a8abd0..062b4ce52a 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java @@ -135,9 +135,9 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable } /** - * Returns an animation to reset the taskbar translation for animation back to launcher. + * Returns an animation to reset the taskbar translation to {@code 0}. */ - public ObjectAnimator createAnimToLauncher(long duration) { + public ObjectAnimator createAnimToResetTranslation(long duration) { ObjectAnimator animator = ObjectAnimator.ofFloat(mTranslationYForSwipe, VALUE, 0); animator.setInterpolator(Interpolators.LINEAR); animator.setDuration(duration);