Reduce flicker when resize animation

When resize split, split decor use fade in animation but bottom
larger than bounds area is black, it will make color change from
black to decor background color and it just like flicker.

To avoid this, we should add back using of am#setSplitScreenResizing
which could make black backgound to color similar to app content
background. And it should also reduce flicker while snap divider to
dismiss split.

Bug: 220985951
Bug: 221178408
Test: manual
Test: pass existing tests
Change-Id: I961a4d3ab4f3552fd5ace4b3a6742afa980f073c
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 3593edd..e150cf9 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
@@ -171,6 +171,7 @@
     private boolean mShouldUpdateRecents;
     private boolean mExitSplitScreenOnHide;
     private boolean mIsDividerRemoteAnimating;
+    private boolean mResizingSplits;
 
     /** The target stage to dismiss to when unlock after folded. */
     @StageType
@@ -1093,10 +1094,11 @@
 
     @Override
     public void onSnappedToDismiss(boolean bottomOrRight) {
+        setResizingSplits(false /* resizing */);
+
         final boolean mainStageToTop =
                 bottomOrRight ? mSideStagePosition == SPLIT_POSITION_BOTTOM_OR_RIGHT
                         : mSideStagePosition == SPLIT_POSITION_TOP_OR_LEFT;
-
         if (!ENABLE_SHELL_TRANSITIONS) {
             exitSplitScreen(mainStageToTop ? mMainStage : mSideStage, EXIT_REASON_DRAG_DIVIDER);
             return;
@@ -1125,6 +1127,7 @@
     @Override
     public void onLayoutSizeChanging(SplitLayout layout) {
         mSyncQueue.runInSync(t -> {
+            setResizingSplits(true /* resizing */);
             updateSurfaceBounds(layout, t);
             mMainStage.onResizing(getMainStageBounds(), t);
             mSideStage.onResizing(getSideStageBounds(), t);
@@ -1138,6 +1141,7 @@
         updateUnfoldBounds();
         mSyncQueue.queue(wct);
         mSyncQueue.runInSync(t -> {
+            setResizingSplits(false /* resizing */);
             updateSurfaceBounds(layout, t);
             mMainStage.onResized(t);
             mSideStage.onResized(t);
@@ -1179,6 +1183,16 @@
                 bottomRightStage.mRootLeash, topLeftStage.mDimLayer, bottomRightStage.mDimLayer);
     }
 
+    void setResizingSplits(boolean resizing) {
+        if (resizing == mResizingSplits) return;
+        try {
+            ActivityTaskManager.getService().setSplitScreenResizing(resizing);
+            mResizingSplits = resizing;
+        } catch (RemoteException e) {
+            Slog.w(TAG, "Error calling setSplitScreenResizing", e);
+        }
+    }
+
     @Override
     public int getSplitItemPosition(WindowContainerToken token) {
         if (token == null) {