1

我有多个活动包括多个片段。我尝试显示从第一个片段中的 RecyclerView 项目到第二个片段中的 ImageView 的变形动画。第一个片段进入背景(它变得有点暗),当我从第二个片段返回时,当视图在 RecyclerView 中的位置布置时,第一个片段进入前景(它变得更亮)。它看起来像在整个屏幕上闪烁。

在第一个活动中:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        window.requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS)
        setExitSharedElementCallback(
            MaterialContainerTransformSharedElementCallback()
        )
} 

在第一个片段中:

override fun onClick(t: T, poster: View) {
        val intent = Intent(activity, DetailActivity::class.java).apply {
            putExtras(Bundle().apply {
                putParcelable(EXTRA_TMDB_ITEM, t)
                putParcelable(EXTRA_NAV_TYPE, navType)
            })
        }
        val options = ActivityOptions.makeSceneTransitionAnimation(
            activity,
            poster, t.name
        )
        startActivity(intent, options.toBundle())
    }

在第二个活动中:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        window.requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS)

        // set up shared element transition
        setEnterSharedElementCallback(
            MaterialContainerTransformSharedElementCallback()
        )
        window.sharedElementEnterTransition = getContentTransform()
        window.sharedElementReturnTransition = getContentTransform()
}

/** get a material container arc transform. */
    private fun getContentTransform(): MaterialContainerTransform {
        return MaterialContainerTransform().apply {
            addTarget(R.id.details_poster)
            duration = 450
            pathMotion = MaterialArcMotion()
        }
    }

在第二个片段中:

override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
    ): View? {
        super.onCreateView(inflater, container, savedInstanceState)
        ViewCompat.setTransitionName(binding.detailsPoster, tmdbItem.name)
}

源代码可以在这里找到:https ://github.com/alirezaeiii/TMDb-Paging

你知道我怎样才能避免第一个活动中的第一个片段进入后台吗?

4

0 回答 0