From 181f4b2c4006fc5cb2be62cc3188cee03756c72c Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Mon, 14 Feb 2022 19:03:08 -0800 Subject: [PATCH] Ensure starting split animation scale is always 1 Bug: 194414938 Test: After second app selected, first split placeholder view doesn't jumpcut to arbitrary Y bounds. Change-Id: Ic8b809f147bf38f78198ef4224d810faf5e3c5ba --- .../quickstep/views/FloatingTaskView.java | 21 +++++++------------ .../android/quickstep/views/RecentsView.java | 9 ++++---- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java index 9ae5d250b8..bee1c1a3df 100644 --- a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java +++ b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java @@ -176,13 +176,12 @@ public class FloatingTaskView extends FrameLayout { } public void addAnimation(PendingAnimation animation, RectF startingBounds, Rect endBounds, - View viewToCover, boolean fadeWithThumbnail) { + boolean fadeWithThumbnail) { final BaseDragLayer dragLayer = mActivity.getDragLayer(); int[] dragLayerBounds = new int[2]; dragLayer.getLocationOnScreen(dragLayerBounds); SplitOverlayProperties prop = new SplitOverlayProperties(endBounds, - startingBounds, viewToCover, dragLayerBounds[0], - dragLayerBounds[1]); + startingBounds, dragLayerBounds[0], dragLayerBounds[1]); ValueAnimator transitionAnimator = ValueAnimator.ofFloat(0, 1); animation.add(transitionAnimator); @@ -205,10 +204,10 @@ public class FloatingTaskView extends FrameLayout { initialWindowRadius, 0, animDuration, LINEAR); final FloatProp mDx = new FloatProp(0, prop.dX, 0, animDuration, LINEAR); final FloatProp mDy = new FloatProp(0, prop.dY, 0, animDuration, LINEAR); - final FloatProp mTaskViewScaleX = new FloatProp(prop.initialTaskViewScaleX, - prop.finalTaskViewScaleX, 0, animDuration, LINEAR); - final FloatProp mTaskViewScaleY = new FloatProp(prop.initialTaskViewScaleY, - prop.finalTaskViewScaleY, 0, animDuration, LINEAR); + final FloatProp mTaskViewScaleX = new FloatProp(1f, prop.finalTaskViewScaleX, 0, + animDuration, LINEAR); + final FloatProp mTaskViewScaleY = new FloatProp(1f, prop.finalTaskViewScaleY, 0, + animDuration, LINEAR); @Override public void onUpdate(float percent, boolean initOnly) { // Calculate the icon position. @@ -225,24 +224,20 @@ public class FloatingTaskView extends FrameLayout { private static class SplitOverlayProperties { - private final float initialTaskViewScaleX; - private final float initialTaskViewScaleY; private final float finalTaskViewScaleX; private final float finalTaskViewScaleY; private final float dX; private final float dY; - SplitOverlayProperties(Rect endBounds, RectF startTaskViewBounds, View view, + SplitOverlayProperties(Rect endBounds, RectF startTaskViewBounds, int dragLayerLeft, int dragLayerTop) { float maxScaleX = endBounds.width() / startTaskViewBounds.width(); float maxScaleY = endBounds.height() / startTaskViewBounds.height(); - initialTaskViewScaleX = view.getScaleX(); - initialTaskViewScaleY = view.getScaleY(); finalTaskViewScaleX = maxScaleX; finalTaskViewScaleY = maxScaleY; - // Animate the app icon to the center of the window bounds in screen coordinates. + // Animate to the center of the window bounds in screen coordinates. float centerX = endBounds.centerX() - dragLayerLeft; float centerY = endBounds.centerY() - dragLayerTop; diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 2a2d1dde3e..3450b7c31f 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -2727,7 +2727,7 @@ public abstract class RecentsView { if (success) { @@ -4019,7 +4019,7 @@ public abstract class RecentsView mSplitSelectStateController.setSecondTaskId(taskView.getTask().key.id, aBoolean1 -> RecentsView.this.resetFromSplitSelectionState()));