или выше, так как они исправили переходы в этой версии.

лизую приложение галереи, которое имеет фрагмент, который содержит RecyclerView с изображениями, и по щелчку изображения я перехожу в ViewPager для циклического перемещения по изображениям.
Сейчас я пытаюсь реализовать только анимацию входа, как вэто видео. Проблема в том, что анимация просто не работает, я явно что-то упускаю (просто показываю код, который имеет отношение к переходам):

ViewPager:

public class ViewPagerFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_viewpager, container, false);
        Transition transition = TransitionInflater.from(getContext()).inflateTransition(R.transition.fragment_transition);

        setSharedElementEnterTransition(transition);
        postponeEnterTransition();
        return view;
}

GridAdapter:

public class GridAdapter extends RecyclerView.Adapter<GridAdapter.ViewHolder> {

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.setPhotoImage(new File(mArrayOfPhotos.get(position).photo));
        ViewCompat.setTransitionName(holder.photoImage, mPhotoObjects.get(position).photo);
    }

    @Override
    public void onClick(View view) {
        // pass an image view that is being clicked... 
        // ...via listener to MainActivity from where ViewPagerFragment is started
        mListener.onImageSelected(photoImage, getAdapterPosition());
    }
}

В MainActivity я создаю экземпляр ViewPagerFragment в onClick:

@Override
public void onImageSelected(View view, int clickedImagePosition) {
    ViewPagerFragment fragment = new ViewPagerFragment();
    Bundle bundle = new Bundle();
    bundle.putInt(ViewPagerFragment.KEY_IMAGE_INDEX, clickedImagePosition);
    fragment.setArguments(bundle);
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    // view is an image view that was clicked
    fragmentTransaction.addSharedElement(view, ViewCompat.getTransitionName(view));
    fragmentTransaction.setReorderingAllowed(true);
    fragmentTransaction.replace(R.id.fragment_placeholder, fragment, VIEWPAGER_FRAGMENT);
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.commit();
}

И, наконец, в ImageFragment (который является одним изображением в ViewPager) у меня есть:

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    mFullImage.setTransitionName(transitionName);

    Glide.with(getActivity())
            .load(myImage)
            .apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL))
            .listener(new RequestListener<Drawable>() {
                @Override
                public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                    getParentFragment().startPostponedEnterTransition();
                    return false;
                }

                @Override
                public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                    getParentFragment().startPostponedEnterTransition();
                    return false;
                }
            })
            .into(mFullImage);

    return view;
}

Имя перехода не является проблемой, оно уникально и обычно передается между всеми фрагментами. Я следовалэто статью и прочитал много других, но такое ощущение, что немного не хватает в моем коде.

РЕДАКТИРОВАТЬ:
Я смог локализовать проблему, я думаю. Переход работал несколько раз случайным образом, по-видимому, это происходит потому, что изображения не готовы, когда я делаю переход. Я пытался позвонитьpostponeEnterTransition() в MainActivityonCreate но все еще не работает. Изображения передаются вImageFragment через расслоение. Все еще смотрящий.

РЕДАКТИРОВАТЬ:

Я считаю, что я нашел проблему, у меня есть фрагмент, который имеетTabLayout внутри него, который имеет 2 фрагмента, один из которых отображает все фотографии, а другой - фотографии, помеченные как избранные. И они оба используют одно и то жеRecyclerView, Переход к общему элементу работает только в том случае, если фотография находится в одном разделе одновременно, после того, как я отмечу фотографию как избранную, она появляется на всех фотографиях, а также в избранных фотографиях, и переход больше не работает. Вероятно, это происходит потому, что переход уже не уникален. Есть ли способ решить это? Учитывая тот факт, что оба фрагмента используют один и тот жеRecyclerViewи тот же класс адаптера.

Ответы на вопрос(1)

Ваш ответ на вопрос