0

我正在尝试向我的片段添加一个共享元素转换,这将在顶部创建一个居中徽标之类的东西。我通过共享元素转换成功地做到了这一点,但徽标也应用了一些窗口插图。问题在于只有在共享元素转换完成后才会应用窗口插图。这使得视图看起来像跳转到它们的最终位置。

我正在使用下面的代码。

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    val view = layoutInflater?.inflate(R.layout.onboarding_layout, container, false)

    return view
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)

    ViewCompat.setOnApplyWindowInsetsListener(appimageviewLogo) { view, insets ->
        val params = view.layoutParams as ViewGroup.MarginLayoutParams
        params.topMargin = params.topMargin + insets.systemWindowInsetTop
        insets
    }

    ViewCompat.setOnApplyWindowInsetsListener(appbuttonSkip) { view, insets ->
        val params = view.layoutParams as ViewGroup.MarginLayoutParams
        params.bottomMargin = params.bottomMargin + insets.systemWindowInsetBottom
        insets.consumeSystemWindowInsets()
    }

    ViewCompat.requestApplyInsets(appimageviewLogo)
    ViewCompat.requestApplyInsets(appbuttonSkip)
}

有人可以帮我吗?

如何在执行共享元素转换之前先应用窗口插图,以免发生“跳跃”?

4

1 回答 1

0

所以基本上我会回答我自己的问题。解决方案是推迟传入片段的 enterTransition,然后请求窗口插入,然后启动推迟的 EnterTransition。

我从 Medium 的 Andranik Azizbekian 的帖子中得到了所有这些信息。你可以在这里查看他关于窗口插图的帖子,这里的问题的链接和他对这些问题的回答。:)

注意:为了让延迟进入转换对片段起作用,setReorderingAllowed 必须使用 FragmentTransaction 设置为 true。

于 2018-06-01T01:37:20.333 回答