diff options
| author | 2023-11-07 16:35:44 +0100 | |
|---|---|---|
| committer | 2023-11-08 12:34:36 +0100 | |
| commit | 9a9c0197d1a796933ceccda0be7c7487b0301cb6 (patch) | |
| tree | e5e2416cbf0fd012710b2a1f6f87a5de556fabc6 | |
| parent | d6afd39ee3f6e497e59fc79287a2b92c6ce2d8de (diff) | |
Handle right back swipe differently for cross task back
Bug: 259429314
Test: Manual, i.e. verifying cross task back animation on device
Change-Id: Ic2913bd5988e98f7fedd8314bbb4a09c654307ed
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java index 8171d4af941f..80fc3a867d48 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java @@ -18,6 +18,7 @@ package com.android.wm.shell.back; import static android.view.RemoteAnimationTarget.MODE_CLOSING; import static android.view.RemoteAnimationTarget.MODE_OPENING; +import static android.window.BackEvent.EDGE_RIGHT; import static com.android.internal.jank.InteractionJankMonitor.CUJ_PREDICTIVE_BACK_CROSS_TASK; import static com.android.wm.shell.back.BackAnimationConstants.UPDATE_SYSUI_FLAGS_THRESHOLD; @@ -101,6 +102,7 @@ public class CrossTaskBackAnimation extends ShellBackAnimation { private RemoteAnimationTarget mClosingTarget; private final SurfaceControl.Transaction mTransaction = new SurfaceControl.Transaction(); private boolean mBackInProgress = false; + private boolean mIsRightEdge; private final PointF mTouchPos = new PointF(); private IRemoteAnimationFinishedCallback mFinishCallback; private final BackProgressAnimator mProgressAnimator = new BackProgressAnimator(); @@ -172,7 +174,12 @@ public class CrossTaskBackAnimation extends ShellBackAnimation { // Move the window along the Y axis. float scaledTop = (height - scaledHeight) * 0.5f + deltaY; // Move the window along the X axis. - float right = width - (progress * mVerticalMargin); + float right; + if (mIsRightEdge) { + right = (width - scaledWidth) * 0.5f + scaledWidth; + } else { + right = width - (progress * mVerticalMargin); + } float left = right - scaledWidth; mClosingCurrentRect.set(left, scaledTop, right, scaledTop + scaledHeight); @@ -262,6 +269,7 @@ public class CrossTaskBackAnimation extends ShellBackAnimation { private void onGestureProgress(@NonNull BackEvent backEvent) { if (!mBackInProgress) { + mIsRightEdge = backEvent.getSwipeEdge() == EDGE_RIGHT; mInitialTouchPos.set(backEvent.getTouchX(), backEvent.getTouchY()); mBackInProgress = true; } |