Общие элементы анимации между фрагментами
Я пытаюсь анимировать 2 простых представления из выбранного элемента в RecyclerView в новый фрагмент. Я рассмотрел множество примеров анимации общих элементов из одного действия в другое, но очень мало примеров анимации общего элемента из одного фрагмента в другой фрагмент в рамках одного и того же действия. Это почти работает.
Вот моя структура.
Деятельность
- Полный экран Fragment1 с RecyclerView
- Полный экран Fragment2 с деталями
Когда пользователь выбирает элемент в RecyclerView в Fragment1, я заменяю Fragment1 на Fragment2, у которого есть View с общими элементами в нем в разных позициях и размерах.
Есть несколько хитростей, чтобы заставить его работать, вы должны убедиться, что ваш transitionName уникален для каждого элемента в вашем списке, и, конечно, это transitionName должно совпадать с transitionName элемента во Fragment2 для воспроизведения анимации. У меня есть эта часть, работающая, когда я выбираю элемент, два общих просмотра анимируются, но не совсем так, как вы ожидаете, когда будете делать это между двумя действиями.
Если я выбираю элемент в нижней части экрана, он рисует вид для фрагмента2 и анимирует 2 общих вида, как если бы они были в элементе в верхней части экрана. Тяжело объяснить. Вот несколько картинок
Fragment1
FRAGMENT2
В обоих фрагментах я устанавливаю следующее
setSharedElementEnterTransition(new ChangeBounds());
setSharedElementReturnTransition(new ChangeBounds());
setAllowEnterTransitionOverlap(true);
setAllowReturnTransitionOverlap(true);
Также в их родительской активности в onCreate () я установил
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
Любая идея, почему мои общие элементы анимации начинаются в верхней части моего экрана, даже если они запускались в выбранном элементе в нижней части моего экрана?