Подтвердить что ты не робот

Фрагменты, андроид: z Коррекция (z порядок) и анимация

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

Для этого я использую это, чтобы сохранить предыдущий фрагмент (тот, который надвигается) до тех пор, пока новый фрагмент не будет на своем месте:

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
   android:fromAlpha="1.0" android:toAlpha="1.0" 
   android:duration="2500"
   android:zAdjustment="bottom" />

это анимация, используемая для того, чтобы новый фрагмент соскальзывался снизу:

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="100%p" android:toYDelta="0"
        android:duration="@android:integer/config_mediumAnimTime" 
        android:zAdjustment="top"/>

Я установил регулировку z в нижнюю и верхнюю части для обоих, но все же анимация "внизу" все еще находится поверх нового фрагмента! Я тестировал продолжительность 2500, и он остается на вершине в течение всего времени.

Не работает ли z-настройка для анимации фрагментов?

4b9b3361

Ответ 1

В соответствии с этим нить в группе google для группы работает только для анимации окон.

"Настройка Z работает только для анимации окон. Я думал, что это задокументировано, но, видимо, нет". - Dianne Hackborn (разработчик фреймворка Android)

Ответ 2

Я тоже застрял в этой проблеме. Поэтому вместо использования transaction.replace(containerId, newFragment) я создал два контейнера для фрагментов, и теперь мой код выглядит как этот

Добавить первый фрагмент:

transaction.add(containerId1, firstFragment).commit();

Добавьте второй фрагмент с анимацией по первому:

findViewById(containerId2).bringToFront();
transaction.setCustomAnimations(R.anim.slide_in_up,
 R.anim.stay).remove(oldFragment).add(containerId2, newFragment).commit()