From 42197b5b5caf040ed1ee48a5f1a43d84b375987b Mon Sep 17 00:00:00 2001 From: Torsten Grote <t@grobox.de> Date: Tue, 11 Dec 2018 15:23:30 -0200 Subject: [PATCH] [android] Fix enter transition to fullscreen ImageActivity --- .../briar/android/conversation/ImageActivity.java | 9 +++++++-- .../briar/android/conversation/ImageFragment.java | 12 +++++++++--- .../briar/android/conversation/ImageViewHolder.java | 4 ++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java index 811bf11e38..f7da8d5c3c 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java @@ -82,7 +82,7 @@ public class ImageActivity extends BriarActivity super.onCreate(state); // Transitions - supportPostponeEnterTransition(); + if (state == null) supportPostponeEnterTransition(); Window window = getWindow(); if (SDK_INT >= 21) { Transition transition = new Fade(); @@ -298,13 +298,18 @@ public class ImageActivity extends BriarActivity private class ImagePagerAdapter extends FragmentStatePagerAdapter { + private boolean isFirst = true; + private ImagePagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { - return ImageFragment.newInstance(attachments.get(position)); + Fragment f = ImageFragment + .newInstance(attachments.get(position), isFirst); + isFirst = false; + return f; } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageFragment.java index bf7ff57915..6ab0d0b041 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageFragment.java @@ -35,17 +35,21 @@ import static org.briarproject.briar.android.conversation.ImageActivity.ATTACHME @ParametersAreNonnullByDefault public class ImageFragment extends Fragment { + private final static String IS_FIRST = "isFirst"; + @Inject ViewModelProvider.Factory viewModelFactory; private AttachmentItem attachment; + private boolean isFirst; private ImageViewModel viewModel; private PhotoView photoView; - static ImageFragment newInstance(AttachmentItem a) { + static ImageFragment newInstance(AttachmentItem a, boolean isFirst) { ImageFragment f = new ImageFragment(); Bundle args = new Bundle(); args.putParcelable(ATTACHMENT_POSITION, a); + args.putBoolean(IS_FIRST, isFirst); f.setArguments(args); return f; } @@ -63,6 +67,7 @@ public class ImageFragment extends Fragment { Bundle args = requireNonNull(getArguments()); attachment = requireNonNull(args.getParcelable(ATTACHMENT_POSITION)); + isFirst = args.getBoolean(IS_FIRST); } @Nullable @@ -86,7 +91,7 @@ public class ImageFragment extends Fragment { public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) { - if (getActivity() != null) + if (getActivity() != null && isFirst) getActivity().supportStartPostponedEnterTransition(); return false; } @@ -105,8 +110,9 @@ public class ImageFragment extends Fragment { if (viewModel.isOverlappingToolbar(photoView, resource)) { photoView.setScaleType(FIT_START); } - if (getActivity() != null) + if (getActivity() != null && isFirst) { getActivity().supportStartPostponedEnterTransition(); + } return false; } }; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageViewHolder.java index 301fa3c13f..f76e3c2ec6 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageViewHolder.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageViewHolder.java @@ -15,6 +15,7 @@ import org.briarproject.briar.android.conversation.glide.BriarImageTransformatio import org.briarproject.briar.android.conversation.glide.GlideApp; import org.briarproject.briar.android.conversation.glide.Radii; +import static android.os.Build.VERSION.SDK_INT; import static com.bumptech.glide.load.engine.DiskCacheStrategy.NONE; import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade; @@ -42,6 +43,9 @@ class ImageViewHolder extends ViewHolder { } else { setImageViewDimensions(attachment, single, needsStretch); loadImage(attachment, r); + if (SDK_INT >= 21) { + imageView.setTransitionName(attachment.getTransitionName()); + } } } -- GitLab