Используйте TransitionSet для входа / выхода перехода с android навигационной библиотекой - PullRequest
1 голос
/ 23 апреля 2020

Я хочу использовать 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. И выполнение входного перехода нового фрагмента после выходного перехода предыдущего фрагмента. Я что-то пропустил или это невозможно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...