У меня есть RecyclerView (содержится в ViewPager), содержащий изображения, и я хотел бы отображать их в полноэкранном режиме с переходом общего элемента, когда пользователь нажимает на него. Я успешно реализовал переход общего элемента между моими двумя фрагментами, но когда я нажимаю на кнопку возврата, ImageView, где я щелкнул, имеет белый цвет.
В моем методе onBindViewHolder у меня есть:
holder.picturePost.setOnClickListener(v -> {
NavDirections action = ProfileFragmentDirections.viewPostDetails(post);
v.setTransitionName(post);
FragmentNavigator.Extras extras = new FragmentNavigator.Extras.Builder().addSharedElement(v, post).build();
Navigation.findNavController(v).navigate(action, extras);
});
Мое назначение фрагмент является OpenPostFragment:
public class OpenPostFragment extends Fragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
postponeEnterTransition();
setSharedElementEnterTransition(TransitionInflater.from(getContext()).inflateTransition(android.R.transition.move));
setSharedElementReturnTransition(TransitionInflater.from(getContext()).inflateTransition(android.R.transition.move));
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.post_card_fragment, container, false);
Bundle args = getArguments();
if (args != null) {
ImageView picturePost = root.findViewById(R.id.picturePost);
String imagePath = args.getString("imagePath");
picturePost.setTransitionName(imagePath);
Glide.with(picturePost)
.load(imagePath)
.dontTransform()
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
startPostponedEnterTransition();
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
startPostponedEnterTransition();
return false;
}
})
.into(picturePost);
}
return root;
}
}