Я хочу использовать TransitionSet
в сочетании с findNavController().navigate(action)
из библиотеки навигации Android, чтобы заархивировать более сложную анимацию, чем я могу сделать с помощью app:enterAnim
на графике навигации
Для заархивировав это, я попытался перезаписать переходы входа и выхода в onCreate фрагмента
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enterTransition = getEnterTransitionSet()
exitTransition = getExitTransitionSet()
allowEnterTransitionOverlap = false
}
private fun getEnterTransitionSet(): TransitionSet {
return TransitionSet()
.addTransition(Fade(Fade.MODE_IN)
.addTarget(R.id.button)
.setDuration(TRANSITION_DURATION)
)
.addTransition(Slide(Gravity.BOTTOM)
.addTarget(R.id.text)
.setDuration(TRANSITION_DURATION)
).setOrdering(ORDERING_TOGETHER)
}
private fun getExitTransitionSet(): TransitionSet {
return TransitionSet()
.addTransition(Fade(Fade.MODE_OUT)
.addTarget(R.id.buttom)
.setDuration(TRANSITION_DURATION)
)
.addTransition(Slide(Gravity.TOP)
.addTarget(R.id.text)
.setDuration(TRANSITION_DURATION)
).setOrdering(ORDERING_TOGETHER)
}
. Текст должен скользить снизу и выдвигаться вверх, а кнопка должна исчезать или исчезать.
Чтобы проверить это, я создал все oop и перешел к одному и тому же фрагменту снова при нажатии кнопки, но анимация ввода никогда не выполняется, и новый фрагмент надувается поверх старого. После этого выполняется выходной переход старого фрагмента.
Я ожидал, что поведение будет похоже на app:enterAnim
и app:exitAnim
. И выполнение входного перехода нового фрагмента после выходного перехода предыдущего фрагмента. Я что-то пропустил или это невозможно?