From 099341fa97ed828fab80fa1064afed720bfaaf7e Mon Sep 17 00:00:00 2001 From: Lucas Silva Date: Mon, 19 Dec 2022 14:32:33 -0500 Subject: [PATCH] Allow QuickstepTransitionManager to be overridden This allows for custom animations in classes inheriting from QuickstepLauncher Bug: 260637266 Test: flashed device and verified animation Change-Id: I21fa112851e9ce43037151fc4c2fd21e90056712 --- .../launcher3/QuickstepTransitionManager.java | 52 +++++++++++-------- .../uioverrides/QuickstepLauncher.java | 9 +++- .../launcher3/config/FeatureFlags.java | 4 ++ 3 files changed, 41 insertions(+), 24 deletions(-) diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java index b880a7e3f3..347c492bc3 100644 --- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java @@ -213,9 +213,9 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener private static final int WIDGET_CROSSFADE_DURATION_MILLIS = 125; protected final QuickstepLauncher mLauncher; - private final DragLayer mDragLayer; + protected final DragLayer mDragLayer; - final Handler mHandler; + protected final Handler mHandler; private final float mClosingWindowTransY; private final float mMaxShadowRadius; @@ -1097,31 +1097,37 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener return; } if (hasControlRemoteAppTransitionPermission()) { - mWallpaperOpenRunner = createWallpaperOpenRunner(false /* fromUnlock */); - RemoteAnimationDefinition definition = new RemoteAnimationDefinition(); - definition.addRemoteAnimation(WindowManager.TRANSIT_OLD_WALLPAPER_OPEN, - WindowConfiguration.ACTIVITY_TYPE_STANDARD, - new RemoteAnimationAdapter( - new LauncherAnimationRunner(mHandler, mWallpaperOpenRunner, - false /* startAtFrontOfQueue */), - CLOSING_TRANSITION_DURATION_MS, 0 /* statusBarTransitionDelay */)); - - if (KEYGUARD_ANIMATION.get()) { - mKeyguardGoingAwayRunner = createWallpaperOpenRunner(true /* fromUnlock */); - definition.addRemoteAnimation( - WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER, - new RemoteAnimationAdapter( - new LauncherAnimationRunner( - mHandler, mKeyguardGoingAwayRunner, - true /* startAtFrontOfQueue */), - CLOSING_TRANSITION_DURATION_MS, 0 /* statusBarTransitionDelay */)); - } - + addRemoteAnimations(definition); mLauncher.registerRemoteAnimations(definition); } } + /** + * Adds remote animations to a {@link RemoteAnimationDefinition}. May be overridden to add + * additional animations. + */ + protected void addRemoteAnimations(RemoteAnimationDefinition definition) { + mWallpaperOpenRunner = createWallpaperOpenRunner(false /* fromUnlock */); + definition.addRemoteAnimation(WindowManager.TRANSIT_OLD_WALLPAPER_OPEN, + WindowConfiguration.ACTIVITY_TYPE_STANDARD, + new RemoteAnimationAdapter( + new LauncherAnimationRunner(mHandler, mWallpaperOpenRunner, + false /* startAtFrontOfQueue */), + CLOSING_TRANSITION_DURATION_MS, 0 /* statusBarTransitionDelay */)); + + if (KEYGUARD_ANIMATION.get()) { + mKeyguardGoingAwayRunner = createWallpaperOpenRunner(true /* fromUnlock */); + definition.addRemoteAnimation( + WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER, + new RemoteAnimationAdapter( + new LauncherAnimationRunner( + mHandler, mKeyguardGoingAwayRunner, + true /* startAtFrontOfQueue */), + CLOSING_TRANSITION_DURATION_MS, 0 /* statusBarTransitionDelay */)); + } + } + /** * Registers remote animations used when closing apps to home screen. */ @@ -1163,7 +1169,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener SystemUiProxy.INSTANCE.get(mLauncher).setStartingWindowListener(null); } - private void unregisterRemoteAnimations() { + protected void unregisterRemoteAnimations() { if (SEPARATE_RECENTS_ACTIVITY.get()) { return; } diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index 55378785d3..c0cec38cc6 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -238,7 +238,7 @@ public class QuickstepLauncher extends Launcher { mActionsView.updateDimension(getDeviceProfile(), overviewPanel.getLastComputedTaskSize()); mActionsView.updateVerticalMargin(DisplayController.getNavigationMode(this)); - mAppTransitionManager = new QuickstepTransitionManager(this); + mAppTransitionManager = buildAppTransitionManager(); mAppTransitionManager.registerRemoteAnimations(); mAppTransitionManager.registerRemoteTransitions(); @@ -307,6 +307,13 @@ public class QuickstepLauncher extends Launcher { return mHotseatPredictionController; } + /** + * Builds the {@link QuickstepTransitionManager} instance to use for managing transitions. + */ + protected QuickstepTransitionManager buildAppTransitionManager() { + return new QuickstepTransitionManager(this); + } + @Override protected QuickstepOnboardingPrefs createOnboardingPrefs(SharedPreferences sharedPrefs) { return new QuickstepOnboardingPrefs(this, sharedPrefs); diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index aca9393c77..9d6037a56a 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -379,6 +379,10 @@ public final class FeatureFlags { "Enable the ability to generate monochromatic icons, if it is not provided by the app" ); + public static final BooleanFlag ENABLE_DREAM_TRANSITION = getDebugFlag( + "ENABLE_DREAM_TRANSITION", true, + "Enable the launcher transition when the device enters a dream"); + public static final BooleanFlag ENABLE_TASKBAR_EDU_TOOLTIP = getDebugFlag( "ENABLE_TASKBAR_EDU_TOOLTIP", true, "Enable the tooltip version of the Taskbar education flow.");