Я проверил несколько руководств по анимации транзакции между фрагментами. Я использовал этот метод для анимации, и он работает:
fragmentTransaction.setCustomAnimations(android.R.anim.slide_in_left,
android.R.anim.slide_out_right);
Но я хочу инвертировать эту анимацию: старый фрагмент выдвигается влево, а новый - вправо, но никакое значение R.anim
файла не кажется полезным для моей области видимости.
Как мне это сделать?
override
key_code==back_key_press
во втором фрагменте.Ответы:
ОБНОВЛЕНИЕ для Android v19 + см. Эту ссылку через @Sandra
Вы можете создавать свои собственные анимации. Поместите XML-файлы анимации в
res > anim
enter_from_left.xml
enter_from_right.xml
exit_to_left.xml
exit_to_right.xml
вы можете изменить продолжительность на короткое время анимации
или долгое время анимации
ИСПОЛЬЗОВАНИЕ (обратите внимание, что порядок, в котором вы вызываете методы транзакции, имеет значение. Добавьте анимацию перед вызовом .replace, .commit):
источник
700
мой взгляд, длительность такой анимации многовато. Android структура имеет 3 предустановки для синхронизации:android:duration="@android:integer/config_longAnimTime"
,android:duration="@android:integer/config_mediumAnimTime"
иandroid:duration="@android:integer/config_shortAnimTime"
, что соответствует 500, 400 и 200. Я предполагаю , что блок миллисекунды, но я не уверен.Есть три способа анимации транзакции во фрагменте.
Переходы
Пользовательские анимации
Вы также можете настроить анимацию с помощью метода setCustomAnimations ():
slide_up.xml
slide_down.xml
Несколько анимаций
Для более подробной информации вы можете посетить URL
Примечание: - Вы можете проверить анимацию в соответствии с вашими требованиями, потому что выше может быть проблема.
источник
У меня такая же проблема, я использовал простое решение
1) создайте Sliding_out_right.xml в папке anim
2) создайте Sliding_in_left.xml в папке Anim
3) просто используя фрагментную транзакцию setCustomeAnimations () с двумя пользовательскими XML и двумя XML по умолчанию для анимации следующим образом: -
источник
slide_in_down.xml
slide_in_up.xml
slide_out_down.xml
slide_out_up.xml
направление = вниз
направление = вверх
источник
Это еще одно решение, которое я использую:
Использование класса. Допустим, у вас есть два фрагмента (фрагмент списка и подробности), как показано ниже.
использование
Вы можете использовать эту функцию,
CustomAnimator.reversePrevious();
чтобы получить предыдущий вид, когда пользователь снова нажал кнопку.источник