Я пытаюсь анимировать переход между парой фрагментов, используя transaction.show
и transaction.hide
для замены фрагментов. Я думал, что это будет проще, чем использовать replace
, поскольку я понимаю, что это создает новые фрагменты.
(Фрагменты будут повторно использоваться, возможно, более сотни раз, что приведет к высокому использованию памяти обратного стека, и управление обратным стеком будет проблемой, когда у меня все равно есть база данных, сохраняющая всю информацию о фрагментах)
Когда я использую
transaction.setCustomAnimations(R.animator.slide_out_right, R.animator.slide_in_left)
чтобы анимировать переход (или его обратный аналог), анимация работает, но после перехода фрагмент пропадает.
Мои анимации перехода определены в XML, как показано ниже, на основе приведенного в эта тема.
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="x"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="1280"
android:duration="500"
/>
</set>
- Я не использую библиотеку поддержки.
- Я использую один макет кадра для обоих фрагментов, потому что думал, что так будет проще.
- Проблема по своему характеру аналогична проблеме этот вопрос, но для каждого фрагмента используется 2 макета кадра, и проблема возникает только тогда, когда 2 перехода происходят в течение времени анимации 300 мс. Автор нашел обходной путь, заключающийся в использовании
AnimatorSet
в каждом макете. Как новичок в Android, я не уверен, что он имеет в виду и как я буду это делать.
Есть идеи, где я ошибаюсь? Есть ли другой способ анимировать такой простой переход фрагмента, как, кажется, сделал человек выше? Может ли это быть ошибкой? Спасибо.