mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-24 19:56:00 +00:00
Ensure we do not stage shared element transition view when opening media from a bubble.
This commit is contained in:
committed by
Greyson Parrelli
parent
bf611f3a56
commit
5c688289a5
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user