Я пытаюсь анимировать 2 простых представления из выбранного элемента в RecyclerView для нового фрагмента. Я рассмотрел множество примеров анимации разделяемых элементов из одного действия в другую, но очень мало примеров анимации общего элемента из одного фрагмента в другой фрагмент в пределах одного действия. Это почти работает.Общие элементы, анимация между фрагментами
Вот моя структура.
активность
- Полный экран Fragment1 с RecyclerView
- Полный экран FRAGMENT2 с деталями
Когда пользователь выбирает элемент в RecyclerView в Fragment1, я заменяю Fragment1 с FRAGMENT2, что имеет вид с общими элементами в нем в разных положениях и размерах.
Есть немного хитрости, чтобы заставить его работать, вы должны убедиться, что ваше имя перехода уникально для каждого элемента в вашем списке, и, конечно, что имя перехода должно соответствовать имени перехода элемента Fragment2 для анимации играть. У меня есть эта часть работы, когда я выбираю элемент, 2 общих представления делают анимацию, а не точно, как вы могли бы ожидать, когда делаете это между двумя действиями.
Если я выбираю элемент в нижней части экрана, он рисует представление для фрагмента2 и анимирует 2 общих представления, как если бы они находились в элементе в верхней части экрана. Сложно объяснить. Вот некоторые фотографии
Fragment1
FRAGMENT2
В обоих фрагментах я устанавливаю следующие
setSharedElementEnterTransition(new ChangeBounds());
setSharedElementReturnTransition(new ChangeBounds());
setAllowEnterTransitionOverlap(true);
setAllowReturnTransitionOverlap(true);
Также в их родительской активности в OnCreate() я комплект
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
Любая идея, почему мои общие анимации элементов начинаются в верхней части экрана даже тогда, когда они запускались в выбранном элементе в нижней части экрана?
Я не уверен, я понимаю, что вы пытаетесь достичь. Я предполагаю, что странные желтые/синие полосы - это те взгляды, которые вы имеете в виду? Итак, в первом скриншоте вы нажимаете на элемент, и вы ожидаете, что две соответствующие желтые/синие полосы ожидают расположение желтых/синих полос во втором фрагменте ... но что происходит вместо этого? Что вы имеете в виду "...он рисует представление для Fragment2 и анимирует 2 общих представления, как если бы они находились в элементе в верхней части экрана »? Также, что представляют собой стрелки на втором скриншоте? –
Кстати, если вы используете Android Studio, вы можете довольно легко взять захват экрана вашего приложения (см. [** эти инструкции **] (https://developer.android.com/sdk/installing/studio-debug.html#screenCap)) и загрузить его на YouTube (I знаю, что проблема должна быть сложной) –
Последний вопрос: происходит ли это только при выборе элементов в нижней части экрана? Например, будет ли он работать как ожидалось для элементов вверху? –