Android 导航组件不工作的共享视图转换
我已经按照文档使用新的导航组件实现了共享视图转换,但它不起作用。这就是我所拥有的: 片段A具有调用片段B的代码Android 导航组件不工作的共享视图转换,android,android-transitions,shared-element-transition,android-architecture-navigation,Android,Android Transitions,Shared Element Transition,Android Architecture Navigation,我已经按照文档使用新的导航组件实现了共享视图转换,但它不起作用。这就是我所拥有的: 片段A具有调用片段B的代码 val extras = FragmentNavigatorExtras( taskNameInput to "taskName") findNavController().navigate(R.id.action_aFragment_to_BFragment, null), // Bundle of args
val extras = FragmentNavigatorExtras(
taskNameInput to "taskName")
findNavController().navigate(R.id.action_aFragment_to_BFragment,
null), // Bundle of args
null, // NavOptions
extras)
查看布局,id的转换名称设置如下:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/taskNameInput"
android:transitionName="taskName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
...
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(R.transition.move)
return inflater.inflate(com.meanwhile.flatmates.R.layout.fragment_b, container, false)
}
缺少将sharedTransition设置为FragmentB的功能,可以在onCrateView()中完成,如下所示:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/taskNameInput"
android:transitionName="taskName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
...
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(R.transition.move)
return inflater.inflate(com.meanwhile.flatmates.R.layout.fragment_b, container, false)
}
您还需要创建事务文件move.xml:
<transitionSet>
<changeBounds/>
<changeTransform/>
<changeClipBounds/>
<changeImageTransform/>
</transitionSet>
在撰写本文时,它并没有写入新导航组件的文档中,但这只是旧的做法。由于导航组件正在为进入/退出转换发挥一些神奇的作用,所以我还希望为共享视图转换发挥更多的作用。在任何情况下,添加这些行都没有什么大不了的。您的意思是我应该只在res.transition.move.xml中添加这些行而不添加其他标记吗?如果是这样的话,它的工作方式很奇怪。图像只是从右上角滑动到左下角。我想,过渡动画必须以不同的方式工作。我缺少什么?这是一个常见的过渡,但它实际上取决于你想要实现什么。您可能需要使用标记或其他类型的转换,甚至可以节省一些并简化,