diff --git a/packages/SystemUI/res/layout/global_screenshot_static.xml b/packages/SystemUI/res/layout/global_screenshot_static.xml
index 665d4a04b00b6..e4a96947aa6af 100644
--- a/packages/SystemUI/res/layout/global_screenshot_static.xml
+++ b/packages/SystemUI/res/layout/global_screenshot_static.xml
@@ -131,4 +131,13 @@
app:layout_constraintStart_toStartOf="@id/global_screenshot_preview"
app:layout_constraintTop_toTopOf="@id/global_screenshot_preview"
android:elevation="@dimen/screenshot_preview_elevation"/>
+
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotActivity.java b/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotActivity.java
index 35637f66d0df1..cb6ac47c3cb3c 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotActivity.java
@@ -334,11 +334,18 @@ public class LongScreenshotActivity extends Activity {
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
mTransitionView.setImageBitmap(mOutputBitmap);
- mTransitionView.setVisibility(View.VISIBLE);
mTransitionView.setTransitionName(
ChooserActivity.FIRST_IMAGE_PREVIEW_TRANSITION_NAME);
// TODO: listen for transition completing instead of finishing onStop
mTransitionStarted = true;
+ int[] locationOnScreen = new int[2];
+ mTransitionView.getLocationOnScreen(locationOnScreen);
+ int[] locationInWindow = new int[2];
+ mTransitionView.getLocationInWindow(locationInWindow);
+ int deltaX = locationOnScreen[0] - locationInWindow[0];
+ int deltaY = locationOnScreen[1] - locationInWindow[1];
+ mTransitionView.setX(mTransitionView.getX() - deltaX);
+ mTransitionView.setY(mTransitionView.getY() - deltaY);
startActivity(intent,
ActivityOptions.makeSceneTransitionAnimation(this, mTransitionView,
ChooserActivity.FIRST_IMAGE_PREVIEW_TRANSITION_NAME).toBundle());
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
index ee9000fc97231..16872b08b9c89 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
@@ -936,10 +936,12 @@ public class ScreenshotController {
*/
private Supplier getActionTransitionSupplier() {
return () -> {
+ View preview = mScreenshotView.getTransitionView();
+ preview.setX(preview.getX() - mScreenshotView.getStaticLeftMargin());
Pair transition =
ActivityOptions.startSharedElementAnimation(
mWindow, new ScreenshotExitTransitionCallbacksSupplier(true).get(),
- null, Pair.create(mScreenshotView.getScreenshotPreview(),
+ null, Pair.create(mScreenshotView.getTransitionView(),
ChooserActivity.FIRST_IMAGE_PREVIEW_TRANSITION_NAME));
transition.second.startExit();
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java
index 05e1bc082c51e..804e299076068 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java
@@ -137,11 +137,13 @@ public class ScreenshotView extends FrameLayout implements
private int mNavMode;
private boolean mOrientationPortrait;
private boolean mDirectionLTR;
+ private int mStaticLeftMargin;
private ScreenshotSelectorView mScreenshotSelectorView;
private ImageView mScrollingScrim;
private View mScreenshotStatic;
private ImageView mScreenshotPreview;
+ private View mTransitionView;
private View mScreenshotPreviewBorder;
private ImageView mScrollablePreview;
private ImageView mScreenshotFlash;
@@ -337,6 +339,7 @@ public class ScreenshotView extends FrameLayout implements
mScrollingScrim = requireNonNull(findViewById(R.id.screenshot_scrolling_scrim));
mScreenshotStatic = requireNonNull(findViewById(R.id.global_screenshot_static));
mScreenshotPreview = requireNonNull(findViewById(R.id.global_screenshot_preview));
+ mTransitionView = requireNonNull(findViewById(R.id.screenshot_transition_view));
mScreenshotPreviewBorder = requireNonNull(
findViewById(R.id.global_screenshot_preview_border));
mScreenshotPreview.setClipToOutline(true);
@@ -382,8 +385,12 @@ public class ScreenshotView extends FrameLayout implements
requestFocus();
}
- View getScreenshotPreview() {
- return mScreenshotPreview;
+ View getTransitionView() {
+ return mTransitionView;
+ }
+
+ int getStaticLeftMargin() {
+ return mStaticLeftMargin;
}
/**
@@ -424,6 +431,7 @@ public class ScreenshotView extends FrameLayout implements
Math.max(cutout.getSafeInsetRight(), waterfall.right), waterfall.bottom);
}
}
+ mStaticLeftMargin = p.leftMargin;
mScreenshotStatic.setLayoutParams(p);
mScreenshotStatic.requestLayout();
}