diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java index 2c96a41bc4..399cdc56fc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -2116,7 +2116,7 @@ public class ConversationFragment extends LoggingFragment implements Multiselect @Override public void goToMediaPreview(ConversationItem parent, View sharedElement, MediaIntentFactory.MediaPreviewArgs args) { if (listener.isInBubble()) { - requireActivity().startActivity(MediaIntentFactory.create(requireActivity(), args)); + requireActivity().startActivity(MediaIntentFactory.create(requireActivity(), args.skipSharedElementTransition(true))); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java index 072ca24a3e..7f5187fb0e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -2393,7 +2393,8 @@ public final class ConversationItem extends RelativeLayout implements BindableCo mediaThumbnailStub.require().getCorners().getTopRight(), mediaThumbnailStub.require().getCorners().getBottomRight(), mediaThumbnailStub.require().getCorners().getBottomLeft() - )); + ), + false); MediaPreviewCache.INSTANCE.setDrawable(((ThumbnailView) v).getImageDrawable()); eventListener.goToMediaPreview(ConversationItem.this, v, args); } else if (slide.getUri() != null) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewPageFragment.java b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewPageFragment.java index 73ca6a3ad1..05e59c23dc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewPageFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewPageFragment.java @@ -261,7 +261,8 @@ public final class MediaOverviewPageFragment extends Fragment DimensionUnit.DP.toDp(12), DimensionUnit.DP.toDp(12), DimensionUnit.DP.toDp(12) - )); + ), + false); view.setTransitionName(MediaPreviewV2Activity.SHARED_ELEMENT_TRANSITION_NAME); ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(requireActivity(), view, MediaPreviewV2Activity.SHARED_ELEMENT_TRANSITION_NAME); context.startActivity(MediaIntentFactory.create(context, args), options.toBundle()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaIntentFactory.kt b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaIntentFactory.kt index 339f7a9079..76c68f3ba5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaIntentFactory.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaIntentFactory.kt @@ -42,8 +42,13 @@ object MediaIntentFactory { val allMediaInRail: Boolean = false, val sorting: MediaTable.Sorting, val isVideoGif: Boolean, - val sharedElementArgs: SharedElementArgs = SharedElementArgs() - ) : Parcelable + val sharedElementArgs: SharedElementArgs = SharedElementArgs(), + val skipSharedElementTransition: Boolean + ) : Parcelable { + fun skipSharedElementTransition(skipSharedElementTransition: Boolean): MediaPreviewArgs { + return copy(skipSharedElementTransition = skipSharedElementTransition) + } + } @JvmStatic fun requireArguments(bundle: Bundle): MediaPreviewArgs = bundle.getParcelableCompat(ARGS_KEY, MediaPreviewArgs::class.java)!! @@ -80,7 +85,8 @@ object MediaIntentFactory { 12.dp.toFloat(), 12.dp.toFloat(), 12.dp.toFloat() - ) + ), + skipSharedElementTransition = false ) ) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Activity.kt b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Activity.kt index e52bc5bf82..9abd67c61e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Activity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Activity.kt @@ -40,7 +40,7 @@ class MediaPreviewV2Activity : PassphraseRequiredActivity(), VoiceNoteMediaContr } override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) { - if (MediaPreviewCache.drawable != null) { + if (MediaPreviewCache.drawable != null && !args.skipSharedElementTransition) { val originalCorners = ShapeAppearanceModel.Builder() .setTopLeftCornerSize(args.sharedElementArgs.topLeft) .setTopRightCornerSize(args.sharedElementArgs.topRight) @@ -90,7 +90,7 @@ class MediaPreviewV2Activity : PassphraseRequiredActivity(), VoiceNoteMediaContr transitionImageView = findViewById(R.id.transition_image_view) val cacheDrawable = MediaPreviewCache.drawable - if (cacheDrawable != null) { + if (cacheDrawable != null && !args.skipSharedElementTransition) { val bounds = cacheDrawable.bounds val aspectRatio = bounds.width().toFloat() / bounds.height() val screenRatio = resources.displayMetrics.widthPixels.toFloat() / resources.displayMetrics.heightPixels diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java b/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java index e5d072a42a..18b0a336ed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java @@ -533,7 +533,8 @@ public class AttachmentManager { false, MediaTable.Sorting.Newest, slide.isVideoGif(), - new MediaIntentFactory.SharedElementArgs()); + new MediaIntentFactory.SharedElementArgs(), + false); context.startActivity(MediaIntentFactory.create(context, args)); } }