问题描述
当使用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)
。但是,我无法弄清楚如何使用导航组件来实现共享元素的过渡。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)