导航组件和FragmentContainerView

问题描述

当使用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 (将#修改为@)