Итак, я возился с Shared Element Transition в Android.
Фрагмент карты навигации для справки:
ListFragment -> MovieFragment -> MovieFragment -> ...
Каждый MovieFragment
может запускать другой MovieFragment
.
Насколько я понимаю, обратный вызов от setEnterSharedElementCallback
вызывается для целевого фрагмента (или в данном случае MovieFragment), а затем setExitSharedElementCallback
для предыдущего / исходного фрагмента. Поэтому я предоставляю отображение для представлений в MovieFragment
setEnterSharedElementCallback::onMapSharedElements()
.
Вышеупомянутое работает, пока переходы происходят только между этими двумя фрагментами.
Однако у меня есть случай, когда Мне нужен переход при переходе от MovieFragment
к MovieFragment
(для полной ясности, каждый MovieFragment содержит предложения для похожих фильмов, после щелчка я открываю mov ie в новом Fragment
). Теперь для этого перехода у меня есть setExitSharedElementCallback()
в MovieFragment, где я сопоставляю исходный фрагмент- Views
с именами переходов.
Это тоже работает правильно. У меня есть переход от MovieFragment_1
к MovieFragment_2
.
Возвратный переход с MovieFragment_2
на MovieFragment_1
работает хорошо.
Это проблема: Возвратный переход с MovieFragment_
на ListFragment
не работает .
Дело в том, что я думаю, что функция SharedElement Transition не работает, причина в том, что для облегчения правильного поведения перехода от MovieFragment_1
к MovieFragment_2
и наоборот, я должен setTransitionName(null)
на Просмотры, которые участвовали в последнем переходе. Если я этого не сделаю, независимо от того, какой Views
я отображаю в setEnterSharedElementsCallback::onMapSharedElements()
, переход не работает.
Короче говоря, когда есть Views
в целевом / целевом Fragment
, которые имеют имя перехода, но не часть следующего перехода, переход не происходит. Что полностью противоречит цели onMapSharedElements()
.
У меня есть еще один вопрос , проблема заключалась в том, что я установил android:transitionName
в макете целевого фрагмента, который воспроизводил havo c на переходы и отображение, т.е. отображение не работало.
Есть ли причина для такого поведения, которого я не вижу в документации?