From 7214fd7e2e62a93812e132c83dd748b969dd995a Mon Sep 17 00:00:00 2001 From: Tony Huang Date: Fri, 21 Jan 2022 17:45:17 +0800 Subject: DO NOT MERGE Fix divider animation from overview screen Divider leash is create too quickly to make it show before the animtation. Fix it by only create leash but don't show it before animation start and set it to visible after animation end. Fix: 215322621 Test: manual Test: pass existing tests Change-Id: Iaa068d5a6186cac1e1aad4b30d6f5e76943ebd08 --- .../src/com/android/wm/shell/splitscreen/StageCoordinator.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index 5d1d159e63e6..38c1aff0a62c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -365,8 +365,10 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, void startTasksWithLegacyTransition(int mainTaskId, @Nullable Bundle mainOptions, int sideTaskId, @Nullable Bundle sideOptions, @SplitPosition int sidePosition, float splitRatio, RemoteAnimationAdapter adapter) { + // Ensure divider is invisible before transition. + setDividerVisibility(false /* visible */); // Init divider first to make divider leash for remote animation target. - setDividerVisibility(true /* visible */); + mSplitLayout.init(); // Set false to avoid record new bounds with old task still on top; mShouldUpdateRecents = false; final WindowContainerTransaction wct = new WindowContainerTransaction(); @@ -396,6 +398,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, public void onAnimationFinished() throws RemoteException { mIsDividerRemoteAnimating = false; mShouldUpdateRecents = true; + setDividerVisibility(true /* visible */); mSyncQueue.queue(evictWct); mSyncQueue.runInSync(t -> applyDividerVisibility(t)); finishedCallback.onAnimationFinished(); @@ -420,6 +423,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, public void onAnimationCancelled() { mIsDividerRemoteAnimating = false; mShouldUpdateRecents = true; + setDividerVisibility(true /* visible */); mSyncQueue.queue(evictWct); mSyncQueue.runInSync(t -> applyDividerVisibility(t)); try { -- cgit v1.2.3-59-g8ed1b