Add animation runner for alt-tab desktop app launch
Create a remote transition supporting alt-tab app-launches (app launches caused by a user using alt-tab to select a minimized app) and any minimization caused by hitting the window limit during such an app launch. Test: manual, and WindowAnimatorTest Bug: 349791584 Flag: com.android.window.flags.enable_desktop_app_launch_alttab_transitions Change-Id: I6474fff351f3d7681ca25cd7331e4955e3d1c6e0
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
|
||||
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
|
||||
|
||||
import android.animation.Animator;
|
||||
@@ -31,6 +32,7 @@ import androidx.annotation.Nullable;
|
||||
import com.android.internal.jank.Cuj;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.anim.AnimatorListeners;
|
||||
import com.android.launcher3.desktop.DesktopAppLaunchTransition;
|
||||
import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext;
|
||||
import com.android.launcher3.taskbar.overlay.TaskbarOverlayDragLayer;
|
||||
import com.android.launcher3.views.BaseDragLayer;
|
||||
@@ -41,6 +43,7 @@ import com.android.systemui.shared.recents.model.Task;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
import com.android.window.flags.Flags;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.List;
|
||||
@@ -181,7 +184,7 @@ public class KeyboardQuickSwitchViewController {
|
||||
Runnable onFinishCallback = () -> InteractionJankMonitorWrapper.end(
|
||||
Cuj.CUJ_LAUNCHER_KEYBOARD_QUICK_SWITCH_APP_LAUNCH);
|
||||
TaskbarActivityContext context = mControllers.taskbarActivityContext;
|
||||
RemoteTransition remoteTransition = new RemoteTransition(new SlideInRemoteTransition(
|
||||
final RemoteTransition slideInTransition = new RemoteTransition(new SlideInRemoteTransition(
|
||||
Utilities.isRtl(mControllers.taskbarActivityContext.getResources()),
|
||||
context.getDeviceProfile().overviewPageSpacing,
|
||||
QuickStepContract.getWindowCornerRadius(context),
|
||||
@@ -195,7 +198,7 @@ public class KeyboardQuickSwitchViewController {
|
||||
SystemUiProxy.INSTANCE.get(mKeyboardQuickSwitchView.getContext())
|
||||
.showDesktopApps(
|
||||
mKeyboardQuickSwitchView.getDisplay().getDisplayId(),
|
||||
remoteTransition));
|
||||
slideInTransition));
|
||||
return -1;
|
||||
}
|
||||
// Even with a valid index, this can be null if the user tries to quick switch before the
|
||||
@@ -208,6 +211,13 @@ public class KeyboardQuickSwitchViewController {
|
||||
// Ignore attempts to run the selected task if it is already running.
|
||||
return -1;
|
||||
}
|
||||
RemoteTransition remoteTransition = slideInTransition;
|
||||
if (mOnDesktop && task.task1.isMinimized
|
||||
&& Flags.enableDesktopAppLaunchAlttabTransitions()) {
|
||||
// This app is being unminimized - use our own transition runner.
|
||||
remoteTransition = new RemoteTransition(
|
||||
new DesktopAppLaunchTransition(context, MAIN_EXECUTOR));
|
||||
}
|
||||
mControllers.taskbarActivityContext.handleGroupTaskLaunch(
|
||||
task,
|
||||
remoteTransition,
|
||||
|
||||
Reference in New Issue
Block a user