Loading quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +23 −0 Original line number Diff line number Diff line Loading @@ -356,6 +356,14 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener options.setOnAnimationAbortListener(endCallback); options.setOnAnimationFinishedListener(endCallback); // Prepare taskbar for animation synchronization. This needs to happen here before any // app transition is created. LauncherTaskbarUIController taskbarController = mLauncher.getTaskbarUIController(); if (enableScalingRevealHomeAnimation() && taskbarController != null) { taskbarController.setIgnoreInAppFlagForSync(true); onEndCallback.add(() -> taskbarController.setIgnoreInAppFlagForSync(false)); } IBinder cookie = mAppLaunchRunner.supportsReturnTransition() ? ((ContainerAnimationRunner) mAppLaunchRunner).getCookie() : null; addLaunchCookie(cookie, (ItemInfo) v.getTag(), options); Loading Loading @@ -1924,6 +1932,21 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener anim.addListener(mForceInvisibleListener); } // Syncs the app launch animation and taskbar stash animation (if exists). if (enableScalingRevealHomeAnimation()) { LauncherTaskbarUIController taskbarController = mLauncher.getTaskbarUIController(); if (taskbarController != null) { taskbarController.setIgnoreInAppFlagForSync(false); if (launcherClosing) { Animator taskbar = taskbarController.createAnimToApp(); if (taskbar != null) { anim.play(taskbar); } } } } result.setAnimation(anim, mLauncher, mOnEndCallback::executeAllAndDestroy, skipFirstFrame); } Loading quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +19 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import static com.android.launcher3.QuickstepTransitionManager.TRANSIENT_TASKBAR import static com.android.launcher3.statemanager.BaseState.FLAG_NON_INTERACTIVE; import static com.android.launcher3.taskbar.TaskbarEduTooltipControllerKt.TOOLTIP_STEP_FEATURES; import static com.android.launcher3.taskbar.TaskbarLauncherStateController.FLAG_VISIBLE; import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IGNORE_IN_APP; import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS; import static com.android.window.flags.Flags.enableDesktopWindowingWallpaperActivity; Loading Loading @@ -256,6 +257,24 @@ public class LauncherTaskbarUIController extends TaskbarUIController { return mTaskbarLauncherStateController.createAnimToLauncher(toState, callbacks, duration); } /** * Create Taskbar animation to be played alongside the Launcher app launch animation. */ public @Nullable Animator createAnimToApp() { TaskbarStashController stashController = mControllers.taskbarStashController; stashController.updateStateForFlag(TaskbarStashController.FLAG_IN_APP, true); return stashController.createApplyStateAnimator(stashController.getStashDuration()); } /** * Temporarily ignore FLAG_IN_APP for app launches to prevent premature taskbar stashing. * This is needed because taskbar gets a signal to stash before we actually start the * app launch animation. */ public void setIgnoreInAppFlagForSync(boolean enabled) { mControllers.taskbarStashController.updateStateForFlag(FLAG_IGNORE_IN_APP, enabled); } public void updateTaskbarLauncherStateGoingHome() { mTaskbarLauncherStateController.updateStateForFlag(FLAG_VISIBLE, true); mTaskbarLauncherStateController.applyState(); Loading quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +6 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba public static final int FLAG_STASHED_SYSUI = 1 << 9; // app pinning,... public static final int FLAG_STASHED_DEVICE_LOCKED = 1 << 10; // device is locked: keyguard, ... public static final int FLAG_IN_OVERVIEW = 1 << 11; // launcher is in overview public static final int FLAG_IGNORE_IN_APP = 1 << 12; // used to sync with app launch animation // If any of these flags are enabled, isInApp should return true. private static final int FLAGS_IN_APP = FLAG_IN_APP | FLAG_IN_SETUP; Loading Loading @@ -1263,6 +1264,11 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba */ @Nullable public Animator createSetStateAnimator(long flags, long duration) { // We do this when we want to synchronize the app launch and taskbar stash animations. if (hasAnyFlag(FLAG_IGNORE_IN_APP) && hasAnyFlag(flags, FLAG_IN_APP)) { flags = flags & ~FLAG_IN_APP; } boolean isStashed = mStashCondition.test(flags); if (DEBUG) { Loading Loading
quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +23 −0 Original line number Diff line number Diff line Loading @@ -356,6 +356,14 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener options.setOnAnimationAbortListener(endCallback); options.setOnAnimationFinishedListener(endCallback); // Prepare taskbar for animation synchronization. This needs to happen here before any // app transition is created. LauncherTaskbarUIController taskbarController = mLauncher.getTaskbarUIController(); if (enableScalingRevealHomeAnimation() && taskbarController != null) { taskbarController.setIgnoreInAppFlagForSync(true); onEndCallback.add(() -> taskbarController.setIgnoreInAppFlagForSync(false)); } IBinder cookie = mAppLaunchRunner.supportsReturnTransition() ? ((ContainerAnimationRunner) mAppLaunchRunner).getCookie() : null; addLaunchCookie(cookie, (ItemInfo) v.getTag(), options); Loading Loading @@ -1924,6 +1932,21 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener anim.addListener(mForceInvisibleListener); } // Syncs the app launch animation and taskbar stash animation (if exists). if (enableScalingRevealHomeAnimation()) { LauncherTaskbarUIController taskbarController = mLauncher.getTaskbarUIController(); if (taskbarController != null) { taskbarController.setIgnoreInAppFlagForSync(false); if (launcherClosing) { Animator taskbar = taskbarController.createAnimToApp(); if (taskbar != null) { anim.play(taskbar); } } } } result.setAnimation(anim, mLauncher, mOnEndCallback::executeAllAndDestroy, skipFirstFrame); } Loading
quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +19 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import static com.android.launcher3.QuickstepTransitionManager.TRANSIENT_TASKBAR import static com.android.launcher3.statemanager.BaseState.FLAG_NON_INTERACTIVE; import static com.android.launcher3.taskbar.TaskbarEduTooltipControllerKt.TOOLTIP_STEP_FEATURES; import static com.android.launcher3.taskbar.TaskbarLauncherStateController.FLAG_VISIBLE; import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IGNORE_IN_APP; import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS; import static com.android.window.flags.Flags.enableDesktopWindowingWallpaperActivity; Loading Loading @@ -256,6 +257,24 @@ public class LauncherTaskbarUIController extends TaskbarUIController { return mTaskbarLauncherStateController.createAnimToLauncher(toState, callbacks, duration); } /** * Create Taskbar animation to be played alongside the Launcher app launch animation. */ public @Nullable Animator createAnimToApp() { TaskbarStashController stashController = mControllers.taskbarStashController; stashController.updateStateForFlag(TaskbarStashController.FLAG_IN_APP, true); return stashController.createApplyStateAnimator(stashController.getStashDuration()); } /** * Temporarily ignore FLAG_IN_APP for app launches to prevent premature taskbar stashing. * This is needed because taskbar gets a signal to stash before we actually start the * app launch animation. */ public void setIgnoreInAppFlagForSync(boolean enabled) { mControllers.taskbarStashController.updateStateForFlag(FLAG_IGNORE_IN_APP, enabled); } public void updateTaskbarLauncherStateGoingHome() { mTaskbarLauncherStateController.updateStateForFlag(FLAG_VISIBLE, true); mTaskbarLauncherStateController.applyState(); Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +6 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba public static final int FLAG_STASHED_SYSUI = 1 << 9; // app pinning,... public static final int FLAG_STASHED_DEVICE_LOCKED = 1 << 10; // device is locked: keyguard, ... public static final int FLAG_IN_OVERVIEW = 1 << 11; // launcher is in overview public static final int FLAG_IGNORE_IN_APP = 1 << 12; // used to sync with app launch animation // If any of these flags are enabled, isInApp should return true. private static final int FLAGS_IN_APP = FLAG_IN_APP | FLAG_IN_SETUP; Loading Loading @@ -1263,6 +1264,11 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba */ @Nullable public Animator createSetStateAnimator(long flags, long duration) { // We do this when we want to synchronize the app launch and taskbar stash animations. if (hasAnyFlag(FLAG_IGNORE_IN_APP) && hasAnyFlag(flags, FLAG_IN_APP)) { flags = flags & ~FLAG_IN_APP; } boolean isStashed = mStashCondition.test(flags); if (DEBUG) { Loading