Я пытаюсь анимировать 2 простых представления из выбранного элемента в RecyclerView в новый фрагмент. Я просмотрел множество примеров анимации общих элементов из одного Activity в другое Activity, но очень мало примеров анимации общего элемента из одного фрагмента в другой фрагмент в одном и том же Activity. Это почти работает.
Вот моя структура.
Деятельность
- Полный экран Fragment1 с RecyclerView
- Полный экран Fragment2 с подробностями
Когда пользователь выбирает элемент в RecyclerView во Fragment1, я заменяю Fragment1 на Fragment2, который имеет View с общими элементами в нем в разных положениях и размерах.
Есть небольшой трюк, чтобы заставить его работать: вы должны убедиться, что ваше transitionName уникально для каждого элемента в вашем списке, и, конечно, это transitionName должно совпадать с transitionName элемента в Fragment2 для воспроизведения анимации. У меня эта часть работает, когда я выбираю элемент, 2 общих представления анимируются, но не совсем так, как вы ожидаете, делая это между двумя действиями.
Если я выбираю элемент в нижней части экрана, он рисует представление для фрагмента 2 и анимирует 2 общих представления, как если бы они находились в элементе вверху экрана. Тяжело объяснить. Вот несколько картинок
Fragment1
Fragment2
В обоих фрагментах я задаю следующие
setSharedElementEnterTransition(new ChangeBounds());
setSharedElementReturnTransition(new ChangeBounds());
setAllowEnterTransitionOverlap(true);
setAllowReturnTransitionOverlap(true);
Также в их родительской Activity в onCreate () я установил
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
Есть идеи, почему анимация общих элементов начинается в верхней части экрана, даже если они начинаются в выбранном элементе внизу экрана?
Activity#postponeEnterTransition()
и _2 _..., но дляFragment
s нет эквивалентных методов, поэтому мне любопытно, есть ли другой способ решения проблемы при использованииFragment
переходов ... - person Alex Lockwood   schedule 21.11.2014Activity
переходами, но я еще не слишком много возился с переходами фрагментов. Я сделаю еще один шанс сегодня вечером. Похоже, что проблема в том, что переход фрагмента начинается до того, как завершится представление ресайклера и транзакции фрагмента ... либо это, либо имена переходов не устанавливаются достаточно быстро во втором фрагменте. - person Alex Lockwood   schedule 22.11.2014