Я пытаюсь реализовать несколько приятных переходов между фрагментами, используя общие элементы, и вот чего я хочу добиться:
Когда я переключаюсь с фрагмента 1 на фрагмент 2:
- фрагмент 1 исчезает
- логотип перемещается в левый верхний угол
- фрагмент 2 идет снизу.
Когда я переключаюсь с фрагмента 2 на фрагмент 3:
- фрагмент 2 исчезает
- логотип "не двигается"
- Заголовок 1 перемещается влево
- Название 2 идет справа
- фрагмент 3 идет снизу
Вот настройки для фрагмента 1:
Fagment1.java:
fragment.setExitTransition("fade"); //parameter shortened for readability
XML:
<ImageView [...]
android:id="@+id/octopuss"
android:transitionName="@string/octopuss"/>
Вот настройки для фрагмента 2:
Фрагмент2.java:
fragment3.setEnterTransition("slide_bottom");
fragment3.setSharedElementEnterTransition("move");
fragment3.setExitTransition("fade");
XML:
<ImageView [...]
android:transitionName="@string/octopuss"/>
<TextView [...]
android:transitionName="title1"
android:id="@+id/title1" />
Вызов фрагмента 2 в действии:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction()
.replace(R.id.fullscreen_content, fragment2)
.addToBackStack("connection_transaction");
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
ft.addSharedElement(findViewById(R.id.octopuss), getString(R.string.octopuss));
ft.commit();
Вот настройки для фрагмента 3:
Фрагмент3.java:
fragment3.setEnterTransition("slide_bottom");
fragment3.setSharedElementEnterTransition("slide_right");
XML:
<ImageView [...]
android:transitionName="@string/octopuss"/>
<TextView [...]
android:transitionName="title1"/>
Вызов фрагмента 3 в действии:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction()
.replace(R.id.fullscreen_content, fragment3)
.addToBackStack("preferences_transaction");
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
ft.addSharedElement(findViewById(R.id.title1), "title1");
ft.commit();
Каждый переход очень хорошо работает между фрагментом 1 и фрагментом 2.
Но когда я вызываю фрагмент 3, каждый фрагмент запускает свой enterTransition\exitTansition, как будто у них вообще не было общего элемента:
- Заголовок 1 исчезает с фрагментом 2
- Заголовок 2 идет снизу с фрагментом 3
Может ли кто-нибудь помочь мне найти причину? Что мне не хватает?