diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index 82eaecdd6b..d08949baa4 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -230,6 +230,7 @@ public abstract class AbsSwipeUpHandler, // Used to control launcher components throughout the swipe gesture. private AnimatorControllerWithResistance mLauncherTransitionController; + private boolean mHasEndedLauncherTransition; private AnimationFactory mAnimationFactory = (t) -> { }; @@ -603,11 +604,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 @@ -1422,6 +1423,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 9c207891ac..2ff03cac70 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -1265,7 +1265,9 @@ public abstract class RecentsView