【问题标题】:Shared view transitions with Navigation component not working导航组件的共享视图转换不起作用
【发布时间】:2019-03-04 19:45:23
【问题描述】:

我已按照文档使用新的导航组件实现共享视图转换,但它无法正常工作。这就是我所拥有的:

Fragment A 有这段代码可以调用 Fragment B

val extras = FragmentNavigatorExtras(
                taskNameInput to "taskName")

findNavController().navigate(R.id.action_aFragment_to_BFragment,
            null), // Bundle of args
            null, // NavOptions
            extras)

看一下布局,id的transition name设置如下:

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/taskNameInput"
        android:transitionName="taskName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        ...

那么FragmentB在布局中有如下视图:

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/taskNameInput"
        android:transitionName="taskName"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        ...>

从fragmentA 到fragmentB 时,播放enter 动画,但不播放sharedView 过渡。有什么线索吗?谢谢

【问题讨论】:

    标签: android android-transitions shared-element-transition android-architecture-navigation


    【解决方案1】:

    缺少将 sharedTransition 设置为 FragmentB,可以在 onCrateView() 中进行如下操作:

    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 中添加这些行而不需要额外的标签吗?如果是这样,它会以非常奇怪的方式工作。图像只是从右上角滑到左下角。我想,过渡动画必须以不同的方式工作。我错过了什么?
    • 这是一个常见的过渡,但它确实取决于您想要实现的目标。您可能需要使用标签或不同类型的转换,也许您甚至可以节省一些并简化,
    猜你喜欢
    • 1970-01-01
    • 2022-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多