Fix weird split-screen secondary task animation

As CL[1] corrects the screenBounds of remote animation target,
and we are now using RemoteAnimationTarget#localBounds to offect the
position.

Remove the offset logics in AppWindowAnimationHelper#updateSourceStack,
and TaskViewSimulator#setPreview, then refine computeSurfaceParams
with offseting the position of HOME task by localBounds.

[1]: I793f01fb290fe65af1bbf8e29e429fbca63ac255

Fix: 153581126
Test: manual as below steps:
     1) Launch a app, swipe up to overview screen.
     2) Tap app icon and pressing "Split screen" item.
     3) After entered split-screen mode, taps the task view.
     4) Make sure the secondary task animation the movement is
        correct and smoothly.

Change-Id: I0e4ed1465e80f48336908813ac694fb3aaa3c347
This commit is contained in:
Ming-Shin Lu
2020-05-18 10:36:35 +08:00
parent 6e0d05fc41
commit 1eedfc33c5
3 changed files with 5 additions and 13 deletions
@@ -107,9 +107,6 @@ public class AppWindowAnimationHelper implements TransformParams.BuilderProxy {
private void updateSourceStack(RemoteAnimationTargetCompat target) {
mSourceInsets.set(target.contentInsets);
mSourceStackBounds.set(target.screenSpaceBounds);
// TODO: Should sourceContainerBounds already have this offset?
mSourceStackBounds.offsetTo(target.position.x, target.position.y);
}
public void updateSource(Rect homeStackBounds, RemoteAnimationTargetCompat target) {
@@ -186,14 +183,14 @@ public class AppWindowAnimationHelper implements TransformParams.BuilderProxy {
crop.offsetTo(0, 0);
float cornerRadius = 0f;
float scale = Math.max(mCurrentRect.width(), mTargetRect.width()) / crop.width();
mTmpMatrix.setTranslate(0, 0);
if (app.activityType == RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME) {
mTmpMatrix.setTranslate(app.localBounds.left, app.localBounds.top);
}
if (app.mode == targetMode
&& app.activityType != RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME) {
mTmpMatrix.setRectToRect(mSourceRect, mCurrentRect, ScaleToFit.FILL);
if (app.localBounds != null) {
mTmpMatrix.postTranslate(app.localBounds.left, app.localBounds.top);
} else {
mTmpMatrix.postTranslate(app.position.x, app.position.y);
}
mTmpMatrix.postTranslate(app.localBounds.left, app.localBounds.top);
mCurrentClipRectF.roundOut(crop);
if (mSupportsRoundedCornersOnWindows) {
if (params.getCornerRadius() > -1) {
@@ -15,8 +15,6 @@
*/
package com.android.quickstep.util;
import static android.view.Surface.ROTATION_0;
import static com.android.launcher3.states.RotationHelper.deltaRotation;
import static com.android.launcher3.touch.PagedOrientationHandler.MATRIX_POST_TRANSLATE;
import static com.android.quickstep.util.RecentsOrientedState.postDisplayRotation;
@@ -130,8 +128,6 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy {
mThumbnailData.windowingMode = WINDOWING_MODE_FULLSCREEN;
mThumbnailPosition.set(runningTarget.screenSpaceBounds);
// TODO: Should sourceContainerBounds already have this offset?
mThumbnailPosition.offset(-mRunningTarget.position.x, -mRunningTarget.position.y);
mLayoutValid = false;
}
@@ -472,7 +472,6 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
} else {
setThumbnailRotation(deltaRotate, thumbnailInsets, scale, thumbnailPosition);
}
mMatrix.postTranslate(-thumbnailPosition.left, -thumbnailPosition.top);
final float widthWithInsets;
final float heightWithInsets;