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:
@@ -1234,7 +1234,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
|
||||
}
|
||||
} else if (tag instanceof TaskItemInfo info) {
|
||||
UI_HELPER_EXECUTOR.execute(() ->
|
||||
SystemUiProxy.INSTANCE.get(this).showDesktopApp(info.getTaskId()));
|
||||
SystemUiProxy.INSTANCE.get(this).showDesktopApp(
|
||||
info.getTaskId(), /* remoteTransition= */ null));
|
||||
mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(
|
||||
/* stash= */ true);
|
||||
} else if (tag instanceof WorkspaceItemInfo) {
|
||||
@@ -1325,7 +1326,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
|
||||
GroupTask task,
|
||||
@Nullable RemoteTransition remoteTransition,
|
||||
boolean onDesktop) {
|
||||
handleGroupTaskLaunch(task, remoteTransition, onDesktop, null, null);
|
||||
handleGroupTaskLaunch(task, remoteTransition, onDesktop,
|
||||
/* onStartCallback= */ null, /* onFinishCallback= */ null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1349,17 +1351,24 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
|
||||
UI_HELPER_EXECUTOR.execute(() ->
|
||||
SystemUiProxy.INSTANCE.get(this).showDesktopApps(getDisplay().getDisplayId(),
|
||||
remoteTransition));
|
||||
} else if (onDesktop) {
|
||||
return;
|
||||
}
|
||||
if (onDesktop) {
|
||||
boolean useRemoteTransition = task.task1.isMinimized
|
||||
&& com.android.window.flags.Flags.enableDesktopAppLaunchAlttabTransitions();
|
||||
UI_HELPER_EXECUTOR.execute(() -> {
|
||||
if (onStartCallback != null) {
|
||||
onStartCallback.run();
|
||||
}
|
||||
SystemUiProxy.INSTANCE.get(this).showDesktopApp(task.task1.key.id);
|
||||
SystemUiProxy.INSTANCE.get(this).showDesktopApp(
|
||||
task.task1.key.id, useRemoteTransition ? remoteTransition : null);
|
||||
if (onFinishCallback != null) {
|
||||
onFinishCallback.run();
|
||||
}
|
||||
});
|
||||
} else if (task.task2 == null) {
|
||||
return;
|
||||
}
|
||||
if (task.task2 == null) {
|
||||
UI_HELPER_EXECUTOR.execute(() -> {
|
||||
ActivityOptions activityOptions =
|
||||
makeDefaultActivityOptions(SPLASH_SCREEN_STYLE_UNDEFINED).options;
|
||||
@@ -1368,9 +1377,9 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
|
||||
ActivityManagerWrapper.getInstance().startActivityFromRecents(
|
||||
task.task1.key, activityOptions);
|
||||
});
|
||||
} else {
|
||||
mControllers.uiController.launchSplitTasks(task, remoteTransition);
|
||||
return;
|
||||
}
|
||||
mControllers.uiController.launchSplitTasks(task, remoteTransition);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user