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
This commit is contained in:
Tony Wickham
2021-03-25 17:15:18 -07:00
parent e78a70ba83
commit 6a74e65953

View File

@@ -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);
}
/**