Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3196d0fa authored by Miranda Kephart's avatar Miranda Kephart Committed by Android (Google) Code Review
Browse files

Merge "Fix shared transition offsets in landscape" into sc-dev

parents 9e3ce77c 455fa761
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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"/>
    <View
        android:id="@+id/screenshot_transition_view"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:visibility="invisible"
        app:layout_constraintStart_toStartOf="@id/global_screenshot_preview"
        app:layout_constraintTop_toTopOf="@id/global_screenshot_preview"
        app:layout_constraintEnd_toEndOf="@id/global_screenshot_preview"
        app:layout_constraintBottom_toBottomOf="@id/global_screenshot_preview"/>
</androidx.constraintlayout.widget.ConstraintLayout>
+8 −1
Original line number Diff line number Diff line
@@ -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());
+3 −1
Original line number Diff line number Diff line
@@ -936,10 +936,12 @@ public class ScreenshotController {
     */
    private Supplier<ActionTransition> getActionTransitionSupplier() {
        return () -> {
            View preview = mScreenshotView.getTransitionView();
            preview.setX(preview.getX() - mScreenshotView.getStaticLeftMargin());
            Pair<ActivityOptions, ExitTransitionCoordinator> 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();

+10 −2
Original line number Diff line number Diff line
@@ -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();
    }