diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index 7f38923671..9a8699fea9 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -231,6 +231,7 @@ public abstract class AbsSwipeUpHandler, // Used to control launcher components throughout the swipe gesture. private AnimatorControllerWithResistance mLauncherTransitionController; + private boolean mHasEndedLauncherTransition; private AnimationFactory mAnimationFactory = (t) -> { }; @@ -615,11 +616,11 @@ public abstract class AbsSwipeUpHandler, /** * We don't want to change mLauncherTransitionController if mGestureState.getEndTarget() == HOME - * (it has its own animation). + * (it has its own animation) or if we explicitly ended the controller already. * @return Whether we can create the launcher controller or update its progress. */ private boolean canCreateNewOrUpdateExistingLauncherTransitionController() { - return mGestureState.getEndTarget() != HOME; + return mGestureState.getEndTarget() != HOME && !mHasEndedLauncherTransition; } @Override @@ -1436,6 +1437,8 @@ public abstract class AbsSwipeUpHandler, } private void endLauncherTransitionController() { + mHasEndedLauncherTransition = true; + if (mLauncherTransitionController != null) { // End the animation, but stay at the same visual progress. mLauncherTransitionController.getNormalController().dispatchSetInterpolator( diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 710a9ab9fe..9934ad7c0d 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -1247,8 +1247,14 @@ public abstract class RecentsView