#android #android-fragments #android-architecture-navigation #shared-element-transition
#Android #android-фрагменты #android-архитектура-навигация #общий элемент-переход
Вопрос:
У меня есть общий переход элемента между двумя фрагментами, который отлично работал при использовании a NavHostFragment
<fragment>
в качестве контейнера для фрагментов моего навигационного графика.
В настоящее время кажется, что вместо <fragment>
того, чтобы использовать <androidx.fragment.app.FragmentContainerView>
, который предположительно приносит много исправлений, особенно в том, как обрабатываются переходы.
Однако для меня это нарушает все мои общие переходы элементов. Я определяю их следующим образом (переход от фрагмента A к фрагменту B):
fragment_a.xml
<ImageView
android:id="@ id/logo"
android:transitionName="logo" />
fragment_b.xml
<ImageView
android:id="@ id/logo"
android:transitionName="logo" />
FragmentA.kt
navController.navigate(
FragmentADirections.actionFragmentAToFragmentB(),
FragmentNavigatorExtras(logoView to "logo")
)
FragmentB.kt
override fun onCreate(savedInstanceState: Bundle?) {
sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(R.transition.trans_logo_shared_element)
}
trans_logo_shared_element.xml
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="375"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:transitionOrdering="together">
<changeClipBounds />
<changeTransform />
<changeBounds />
</transitionSet>
В документации FragmentContainerView
говорится, что переходы отключены для контейнера для Android L и выше и что следует использовать FragmentTransaction.setCustomAnimations(int, int, int, int)
вместо этого. Однако я не мог понять, как заставить общие переходы элементов с компонентами навигации работать с ним.
Комментарии:
1. вы нашли решение?
2. Нет, к сожалению, нет. 🙁