Merge "Make taskview resize into a transition" into udc-dev

This commit is contained in:
Evan Rosky
2023-03-30 21:36:08 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 3 deletions

View File

@@ -387,8 +387,15 @@ public class TaskViewTaskController implements ShellTaskOrganizer.TaskListener {
return;
}
// Sync Transactions can't operate simultaneously with shell transition collection.
// The transition animation (upon showing) will sync the location itself.
if (isUsingShellTransitions() && mTaskViewTransitions.hasPending()) return;
if (isUsingShellTransitions()) {
if (mTaskViewTransitions.hasPending()) {
// There is already a transition in-flight. The window bounds will be synced
// once it is complete.
return;
}
mTaskViewTransitions.setTaskBounds(this, boundsOnScreen);
return;
}
WindowContainerTransaction wct = new WindowContainerTransaction();
wct.setBounds(mTaskToken, boundsOnScreen);

View File

@@ -16,6 +16,7 @@
package com.android.wm.shell.taskview;
import static android.view.WindowManager.TRANSIT_CHANGE;
import static android.view.WindowManager.TRANSIT_OPEN;
import static android.view.WindowManager.TRANSIT_TO_BACK;
import static android.view.WindowManager.TRANSIT_TO_FRONT;
@@ -23,6 +24,7 @@ import static android.view.WindowManager.TRANSIT_TO_FRONT;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.graphics.Rect;
import android.os.IBinder;
import android.util.Slog;
import android.view.SurfaceControl;
@@ -40,7 +42,7 @@ import java.util.ArrayList;
* Handles Shell Transitions that involve TaskView tasks.
*/
public class TaskViewTransitions implements Transitions.TransitionHandler {
private static final String TAG = "TaskViewTransitions";
static final String TAG = "TaskViewTransitions";
private final ArrayList<TaskViewTaskController> mTaskViews = new ArrayList<>();
private final ArrayList<PendingTransition> mPending = new ArrayList<>();
@@ -197,6 +199,13 @@ public class TaskViewTransitions implements Transitions.TransitionHandler {
// visibility is reported in transition.
}
void setTaskBounds(TaskViewTaskController taskView, Rect boundsOnScreen) {
WindowContainerTransaction wct = new WindowContainerTransaction();
wct.setBounds(taskView.getTaskInfo().token, boundsOnScreen);
mPending.add(new PendingTransition(TRANSIT_CHANGE, wct, taskView, null /* cookie */));
startNextTransition();
}
private void startNextTransition() {
if (mPending.isEmpty()) return;
final PendingTransition pending = mPending.get(0);