Выход перехода общего элемента Android для фрагмента?

Я пытаюсь сделать такую ​​анимацию, но с фрагментами

https://i.imgur.com/rUkkfUZ.gif

У меня есть фрагмент A и фрагмент B

Фрагмент A содержит переработчик изображений. При нажатии на картинку она перейдет к фрагменту B.

Фрагмент B будет иметь такое же изображение, но поверх экрана.

Мне нужен переход, который перемещает выбранное изображение вверх, чтобы сделать его бесшовным.

На данный момент он работает при возврате, т.е. от фрагмента B к фрагменту A, но не работает от A к B.

Вот мой код

   FragmentB fragmentB = FragmentB.newInstance(someURL);
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Transition transition = TransitionInflater.from(this).inflateTransition(R.transition.mytransition);

            Fragment fragmenAt = fragmentManager.findFragmentById(R.id.fragmentContainer);
            if(fragmentA != null && fragmentA instanceof FragmentA){
//                fragment.setSharedElementReturnTransition(transition);
//                fragment.setSharedElementEnterTransition(transition);
            }

            fragmentB.setSharedElementEnterTransition(transition);
            if (sharedTransitionElementView != null) {
                fragmentB.setSharedTransitionName(sharedTransitionElementView.getTransitionName());
                fragmentTransaction.addSharedElement(sharedTransitionElementView, sharedTransitionElementView.getTransitionName());
            }

        }

        fragmentTransaction.replace(R.id.fragmentContainer, fragmentB);
        fragmentTransaction.addToBackStack(FragmentB.class.getName());
        fragmentTransaction.commit();

Код выше находится в моей деятельности.

Шаги заключаются в том, чтобы создать экземпляр фрагмента B и найти фрагмент A.

Поскольку фрагмент A является представлением переработчика, каждому элементу представления присваивается имя перехода во время выполнения, которое передается во фрагмент B с помощью метода setSharedTransitionName().

Теперь в закомментированных строках происходит мое замешательство, у меня нет setSharedElementExitTransition.

Как я могу получить изображение из фрагмента А для анимации в верхней части экрана?

Просто повторюсь, это работает, когда я возвращаюсь от FragmentA к FragmentB, изображение анимируется сверху до того места, где оно было в списке.


ОБНОВЛЕНИЕ 1

Поэтому я внес это изменение в свой переход

<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" android:duration="750" android:startDelay="150" android:interpolator="@android:interpolator/accelerate_decelerate">
    <changeTransform/>
    <slide android:slideEdge="top"/>
    <changeImageTransform/>
    <changeBounds/>
</transitionSet>

И только с этой строкой

fragmentB.setSharedElementEnterTransition(transition);

Кажется, я получаю выходной переход для фрагмента A, который я не установил. Кто-нибудь может объяснить, почему?


person Ersen Osman    schedule 11.09.2015    source источник
comment
Я не использовал свой переход, потому что он устарел. Это единственный раз, когда я использовал его, и я не могу проверить ваш код в данный момент. Однако, если я сравню свой ответ с вашим, я увижу, что вы не устанавливаете setSharedElementReturnTransition и setExitTransition для видимого в данный момент фрагмента (того, который содержит представление переработчика). setSharedElementReturnTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.change_image_transform)); setExitTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.explode));   -  person ar34z    schedule 11.09.2015
comment
@ ar34z Спасибо за ответ. Я пробовал добавить их, но это не помогло :(   -  person Ersen Osman    schedule 11.09.2015
comment
Пожалуйста, обновите свой вопрос тем, что вы сделали, это поможет другим и избавит их от того же самого.   -  person ar34z    schedule 11.09.2015
comment
@ErsenOsman Вы исправили это? У меня такая же проблема. Можете ли вы поделиться кодом? Спасибо.   -  person Sudheesh Mohan    schedule 03.06.2016