From 6a74e65953adfbef2fc29951cde82e40272bf1b5 Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Thu, 25 Mar 2021 17:15:18 -0700 Subject: [PATCH] Explicitly set which taskbar view is visible at each caller This makes it more clear which taskbar view is expected for particular code flows. Also makes it easier to set it to null in cleanup(). Test: call cleanup() while taskbarOnHome is invisible, ensure hotseat icons go back to being visible Bug: 182512211 Fixes: 183633496 Change-Id: I680a15582c8034a049b20e035b4d54f5ea5aee04 --- .../launcher3/taskbar/TaskbarController.java | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java index de23ad2efa..c4cbf8b761 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java @@ -88,7 +88,6 @@ public class TaskbarController { private @Nullable Animator mAnimator; private boolean mIsAnimatingToLauncher; - private boolean mIsAnimatingToApp; public TaskbarController(BaseQuickstepLauncher launcher, TaskbarContainerView taskbarContainerView, TaskbarView taskbarViewOnHome) { @@ -250,7 +249,9 @@ public class TaskbarController { mHotseatController.init(); mRecentsController.init(); - updateWhichTaskbarViewIsVisible(); + setWhichTaskbarViewIsVisible(mLauncher.hasBeenResumed() + ? mTaskbarViewOnHome + : mTaskbarViewInApp); } private TaskbarStateHandlerCallbacks createTaskbarStateHandlerCallbacks() { @@ -284,6 +285,8 @@ public class TaskbarController { mTaskbarAnimationController.cleanup(); mHotseatController.cleanup(); mRecentsController.cleanup(); + + setWhichTaskbarViewIsVisible(null); } private void removeFromWindowManager() { @@ -364,7 +367,7 @@ public class TaskbarController { @Override public void onAnimationEnd(Animator animation) { mIsAnimatingToLauncher = false; - updateWhichTaskbarViewIsVisible(); + setWhichTaskbarViewIsVisible(mTaskbarViewOnHome); } }); @@ -377,14 +380,12 @@ public class TaskbarController { anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { - mIsAnimatingToApp = true; mTaskbarViewInApp.updateHotseatItemsVisibility(); - updateWhichTaskbarViewIsVisible(); + setWhichTaskbarViewIsVisible(mTaskbarViewInApp); } @Override public void onAnimationEnd(Animator animation) { - mIsAnimatingToApp = false; } }); return anim.buildAnim(); @@ -487,18 +488,12 @@ public class TaskbarController { mTaskbarViewOnHome.getHeight() - hotseatBounds.bottom); } - private void updateWhichTaskbarViewIsVisible() { - boolean isInApp = !mLauncher.hasBeenResumed() || mIsAnimatingToLauncher - || mIsAnimatingToApp; - if (isInApp) { - mTaskbarViewInApp.setVisibility(View.VISIBLE); - mTaskbarViewOnHome.setVisibility(View.INVISIBLE); - mLauncher.getHotseat().setIconsAlpha(0); - } else { - mTaskbarViewInApp.setVisibility(View.INVISIBLE); - mTaskbarViewOnHome.setVisibility(View.VISIBLE); - mLauncher.getHotseat().setIconsAlpha(1); - } + private void setWhichTaskbarViewIsVisible(@Nullable TaskbarView visibleTaskbar) { + mTaskbarViewInApp.setVisibility(visibleTaskbar == mTaskbarViewInApp + ? View.VISIBLE : View.INVISIBLE); + mTaskbarViewOnHome.setVisibility(visibleTaskbar == mTaskbarViewOnHome + ? View.VISIBLE : View.INVISIBLE); + mLauncher.getHotseat().setIconsAlpha(visibleTaskbar != mTaskbarViewInApp ? 1f : 0f); } /**