Материал Дизайн Родитель-Дитя Навигационный переход переработчик Просмотр записи фрагмента детали - PullRequest
0 голосов
/ 27 октября 2018

Фон

Я пытаюсь реализовать переход между родителями и детьми, особенно когда вы щелкаете по записи Recyclerview, и детали отображаются в полноэкранном фрагменте. Как то так:

Parent to child example

Вопрос

Как мне сделать это с таким количеством доступных API анимации? (TransitionManager.beginDelayedTransition, SharedTransition, setExitTransition и т. Д.)

Что я пробовал

  • InboxRecyclerView - это соответствует моим требованиям, КРОМЕ этого, похоже, работает только тогда, когда детальный вид находится в той же компоновке, что и вид Recyclerview. Поскольку я перемещаюсь между фрагментами, используя backstack фрагмента, он мне нужен для перехода между макетами, которые могут быть недоступны до прикрепления.

  • Этот пост - Ответы охватывают только переходы между действиями. Я ищу фрагмент к фрагменту.

  • Custom Transition - я пытался расширить класс Transition, но столкнулся с проблемами. CaptureStartValues ​​(), кажется, захватывает значения из всей сцены. Мне это нужно, чтобы захватить только значения из записи переработчика. Кроме того, по какой-то причине конечные значения не фиксируются, поскольку я получаю нулевые значения endValues ​​в функции createAnimator (ViewGroup sceneRoot, TransitionValues ​​startValues, TransitionValues ​​endValues).

    TransitionSet exitTransition = new TransitionSet()
            .addTransition(new ChangeBounds())
            .addTransition(new ChangeTransform())
            .addTransition(new ChangeClipBounds())
            .addTransition(new ChangeImageTransform())
            .addTransition(new Expand())
            .setOrdering(TransitionSet.ORDERING_TOGETHER);
    TransitionSet enterTransition = new TransitionSet()
            .addTransition(new Fade());
    newFragment.setEnterTransition(enterTransition);
    oldFragment.setExitTransition(exitTransition);
    

1 Ответ

0 голосов
/ 27 октября 2018

Здесь вы должны использовать общие переходы элементов.Будет 2 общих элемента: фон элемента вашего RecyclerView и TextView (например).Фон элемента вашего RecyclerView должен быть растянут (вам нужно использовать переходы ChangeTransform и ChangeBounds) до фона вашего SecondFragment, а ваш TextView должен быть перемещен в заголовок SecondFragment.И вы должны использовать анимацию для ваших переходов Shared Element: сначала вы должны поднять фон элемента вашего RecyclerView, затем вы начнете растягивать фон и перемещать заголовок, и в конце вы должны установить возвышение на нормальный уровень.И обратите внимание, что все это время ваш первый фрагмент должен быть видимым, поэтому вы должны установить для него продолжительность выхода: fragment1.setExitTransition(new Fade().setDuration(1).setStartDelay(<duration_of_transition>));.

Итак, главная цель здесь - использовать переходы SharedElement.Существует очень хорошая статья между фрагментами SharedElement и переходами между фрагментами.

...