From 4f150e08536bd5a355319add2ac4ca772077931c Mon Sep 17 00:00:00 2001 From: Miranda Kephart Date: Thu, 20 Feb 2020 12:49:41 -0500 Subject: [PATCH] Fix screenshot motion spec anchor point Moves the anchor point of the animation into the corner from the top left corner to the center. This fixes the issue where the preview appeared to move "up" before following the correct path. Bug: 149100933 Test: manual; changes animations only Change-Id: I45edf9a82db5f67efa129bdb8a0fd091189e7c7a --- .../systemui/screenshot/GlobalScreenshot.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java index 9e1e347da5e0a..f06cd54f77561 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java @@ -497,9 +497,9 @@ public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInset flashOutAnimator.addUpdateListener(animation -> mScreenshotFlash.setAlpha((float) animation.getAnimatedValue())); - final PointF startPos = new PointF((float) bounds.left, (float) bounds.top); - final PointF finalPos = new PointF(mScreenshotOffsetXPx, - mDisplayMetrics.heightPixels - mScreenshotOffsetYPx - height * cornerScale); + final PointF startPos = new PointF(bounds.centerX(), bounds.centerY()); + final PointF finalPos = new PointF(mScreenshotOffsetXPx + width * cornerScale / 2f, + mDisplayMetrics.heightPixels - mScreenshotOffsetYPx - height * cornerScale / 2f); ValueAnimator toCorner = ValueAnimator.ofFloat(0, 1); toCorner.setDuration(SCREENSHOT_TO_CORNER_Y_DURATION_MS); @@ -517,11 +517,13 @@ public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInset } if (t < xPositionPct) { - mScreenshotView.setX(MathUtils.lerp( - startPos.x, finalPos.x, mFastOutSlowIn.getInterpolation(t / xPositionPct))); + float xCenter = MathUtils.lerp(startPos.x, finalPos.x, + mFastOutSlowIn.getInterpolation(t / xPositionPct)); + mScreenshotView.setX(xCenter - width * mScreenshotView.getScaleX() / 2f); } - mScreenshotView.setY(MathUtils.lerp( - startPos.y, finalPos.y, mFastOutSlowIn.getInterpolation(t))); + float yCenter = MathUtils.lerp(startPos.y, finalPos.y, + mFastOutSlowIn.getInterpolation(t)); + mScreenshotView.setY(yCenter - height * mScreenshotView.getScaleY() / 2f); }); toCorner.addListener(new AnimatorListenerAdapter() {