diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java index 69804bdd5f..113bd91f00 100644 --- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java @@ -121,10 +121,9 @@ public class NavbarButtonsViewController { /** * Initializes the controller */ - public void init(TaskbarControllers controllers, TaskbarSharedState sharedState) { + public void init(TaskbarControllers controllers) { mControllers = controllers; mNavButtonsView.getLayoutParams().height = mContext.getDeviceProfile().taskbarSize; - parseSystemUiFlags(sharedState.sysuiStateFlags); mNavButtonTranslationYMultiplier.value = 1; mA11yLongClickListener = view -> { @@ -290,12 +289,15 @@ public class NavbarButtonsViewController { } } - public void updateStateForSysuiFlags(int systemUiStateFlags) { + public void updateStateForSysuiFlags(int systemUiStateFlags, boolean skipAnim) { if (systemUiStateFlags == mSysuiStateFlags) { return; } parseSystemUiFlags(systemUiStateFlags); applyState(); + if (skipAnim) { + mPropertyHolders.forEach(StatePropertyHolder::endAnimation); + } } /** diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 172b396bcc..db3156bfb9 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -191,6 +191,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ // Initialize controllers after all are constructed. mControllers.init(sharedState); + updateSysuiStateFlags(sharedState.sysuiStateFlags, true /* fromInit */); mWindowManager.addView(mDragLayer, mWindowLayoutParams); } @@ -325,26 +326,28 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ mWindowManager.removeViewImmediate(mDragLayer); } - public void updateSysuiStateFlags(int systemUiStateFlags) { - mControllers.navbarButtonsViewController.updateStateForSysuiFlags(systemUiStateFlags); + public void updateSysuiStateFlags(int systemUiStateFlags, boolean fromInit) { + mControllers.navbarButtonsViewController.updateStateForSysuiFlags(systemUiStateFlags, + fromInit); mControllers.taskbarViewController.setImeIsVisible( mControllers.navbarButtonsViewController.isImeVisible()); int shadeExpandedFlags = SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED | SYSUI_STATE_QUICK_SETTINGS_EXPANDED; - onNotificationShadeExpandChanged((systemUiStateFlags & shadeExpandedFlags) != 0); + onNotificationShadeExpandChanged((systemUiStateFlags & shadeExpandedFlags) != 0, fromInit); mControllers.taskbarViewController.setRecentsButtonDisabled( mControllers.navbarButtonsViewController.isRecentsDisabled()); mControllers.stashedHandleViewController.setIsHomeButtonDisabled( mControllers.navbarButtonsViewController.isHomeDisabled()); mControllers.taskbarKeyguardController.updateStateForSysuiFlags(systemUiStateFlags); - mControllers.taskbarStashController.updateStateForSysuiFlags(systemUiStateFlags); - mControllers.taskbarScrimViewController.updateStateForSysuiFlags(systemUiStateFlags); + mControllers.taskbarStashController.updateStateForSysuiFlags(systemUiStateFlags, fromInit); + mControllers.taskbarScrimViewController.updateStateForSysuiFlags(systemUiStateFlags, + fromInit); } /** * Hides the taskbar icons and background when the notication shade is expanded. */ - private void onNotificationShadeExpandChanged(boolean isExpanded) { + private void onNotificationShadeExpandChanged(boolean isExpanded, boolean skipAnim) { float alpha = isExpanded ? 0 : 1; AnimatorSet anim = new AnimatorSet(); anim.play(mControllers.taskbarViewController.getTaskbarIconAlpha().getProperty( @@ -354,6 +357,9 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ .animateToValue(alpha)); } anim.start(); + if (skipAnim) { + anim.end(); + } } public void onRotationProposal(int rotation, boolean isValid) { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java index 7b0053e0a9..d739eeac26 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java @@ -79,7 +79,7 @@ public class TaskbarControllers { */ public void init(TaskbarSharedState sharedState) { taskbarDragController.init(this); - navbarButtonsViewController.init(this, sharedState); + navbarButtonsViewController.init(this); if (taskbarActivityContext.isThreeButtonNav()) { rotationButtonController.init(); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 92cee04f37..5986e22fab 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -101,7 +101,7 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen public void onConfigurationChanged(Configuration newConfig) { int configDiff = mOldConfig.diff(newConfig); int configsRequiringRecreate = ActivityInfo.CONFIG_ASSETS_PATHS - | ActivityInfo.CONFIG_LAYOUT_DIRECTION; + | ActivityInfo.CONFIG_LAYOUT_DIRECTION | ActivityInfo.CONFIG_UI_MODE; if ((configDiff & configsRequiringRecreate) != 0) { // Color has changed, recreate taskbar to reload background color & icons. recreateTaskbar(); @@ -231,7 +231,7 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen public void onSystemUiFlagsChanged(int systemUiStateFlags) { mSharedState.sysuiStateFlags = systemUiStateFlags; if (mTaskbarActivityContext != null) { - mTaskbarActivityContext.updateSysuiStateFlags(systemUiStateFlags); + mTaskbarActivityContext.updateSysuiStateFlags(systemUiStateFlags, false /* fromInit */); } } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java index e7e55efe63..4b4ee4423c 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java @@ -62,7 +62,7 @@ public class TaskbarScrimViewController { /** * Updates the scrim state based on the flags. */ - public void updateStateForSysuiFlags(int stateFlags) { + public void updateStateForSysuiFlags(int stateFlags, boolean skipAnim) { final boolean bubblesExpanded = (stateFlags & SYSUI_STATE_BUBBLES_EXPANDED) != 0; final boolean manageMenuExpanded = (stateFlags & SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED) != 0; @@ -73,15 +73,18 @@ public class TaskbarScrimViewController { // what the total transparency would be. ? (SCRIM_ALPHA + (SCRIM_ALPHA * (1 - SCRIM_ALPHA))) : showScrim ? SCRIM_ALPHA : 0; - showScrim(showScrim, scrimAlpha); + showScrim(showScrim, scrimAlpha, skipAnim); } - private void showScrim(boolean showScrim, float alpha) { + private void showScrim(boolean showScrim, float alpha, boolean skipAnim) { mScrimView.setOnClickListener(showScrim ? (view) -> onClick() : null); mScrimView.setClickable(showScrim); ObjectAnimator anim = mScrimAlpha.animateToValue(showScrim ? alpha : 0); anim.setInterpolator(showScrim ? SCRIM_ALPHA_IN : SCRIM_ALPHA_OUT); anim.start(); + if (skipAnim) { + anim.end(); + } } private void updateScrimAlpha() { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index 0dd4ef19b3..d11eb36feb 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -408,10 +408,10 @@ public class TaskbarStashController { } /** Called when some system ui state has changed. (See SYSUI_STATE_... in QuickstepContract) */ - public void updateStateForSysuiFlags(int systemUiStateFlags) { + public void updateStateForSysuiFlags(int systemUiStateFlags, boolean skipAnim) { updateStateForFlag(FLAG_STASHED_IN_APP_PINNED, hasAnyFlag(systemUiStateFlags, SYSUI_STATE_SCREEN_PINNING)); - applyState(); + applyState(skipAnim ? 0 : TASKBAR_STASH_DURATION); } /**