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:
+5
-8
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user