From 9f436dfe8ebc046670ca241c3328dc02d92a08d1 Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Mon, 5 Apr 2021 16:07:16 -0700 Subject: [PATCH] Ensure taskbar animation ends when running window animation does - Store the possible parallel animation to cancel/end in AbsSwipeUpHandler#endRunningWindowAnim() Test: 1. remove taskbar during transition, ensure cleaned up properly 2. open a second app during transition to home, ensure taskbar maintains correct visibility Bug: 182512211 Change-Id: I71a6b6ce624113d43ad5a599cb5cfec28a555310 --- .../com/android/quickstep/AbsSwipeUpHandler.java | 15 ++++++++++++++- .../android/quickstep/BaseActivityInterface.java | 4 +++- .../quickstep/LauncherActivityInterface.java | 8 +++++--- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index b7c6743780..5a3e009b8d 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -217,6 +217,8 @@ public abstract class AbsSwipeUpHandler, // Either RectFSpringAnim (if animating home) or ObjectAnimator (from mCurrentShift) otherwise private RunningWindowAnim mRunningWindowAnim; + // Possible second animation running at the same time as mRunningWindowAnim + private Animator mParallelRunningAnim; private boolean mIsMotionPaused; private boolean mHasMotionEverBeenPaused; @@ -798,6 +800,13 @@ public abstract class AbsSwipeUpHandler, mRunningWindowAnim.end(); } } + if (mParallelRunningAnim != null) { + if (cancel) { + mParallelRunningAnim.cancel(); + } else { + mParallelRunningAnim.end(); + } + } } private void onSettledOnEndTarget() { @@ -1060,7 +1069,11 @@ public abstract class AbsSwipeUpHandler, ActivityManagerWrapper.getInstance().registerTaskStackListener( mActivityRestartListener); - mActivityInterface.onAnimateToLauncher(mGestureState.getEndTarget(), duration); + mParallelRunningAnim = mActivityInterface.getParallelAnimationToLauncher( + mGestureState.getEndTarget(), duration); + if (mParallelRunningAnim != null) { + mParallelRunningAnim.start(); + } } if (mGestureState.getEndTarget() == HOME) { diff --git a/quickstep/src/com/android/quickstep/BaseActivityInterface.java b/quickstep/src/com/android/quickstep/BaseActivityInterface.java index 3afffc1dad..d810947ee5 100644 --- a/quickstep/src/com/android/quickstep/BaseActivityInterface.java +++ b/quickstep/src/com/android/quickstep/BaseActivityInterface.java @@ -347,7 +347,9 @@ public abstract class BaseActivityInterface