导航组件 - 淡入特定内容

Navigation Components - Fade in specific content

使用导航组件,我想在过渡期间对 FadeInContent 应用淡入效果,遵循以下顺序:

  1. Text1 -> Text2 转换(通过在 sharedElement 中应用 R.transition.move 完成)
  2. FadeInContent 在 1.transition
  3. 后淡入

我看过这篇文章,它完全符合我的要求,但没有使用导航组件 https://medium.com/bynder-tech/how-to-use-material-transitions-in-fragment-transactions-5a62b9d0b26b,因此我无法申请 setStartDelay。我也不能应用 NavOptions.Builder().setEnterAnim(R.anim.fade_in),因为它适用于所有屏幕,而不仅仅是 FadeInContent。

据我所知,导航组件只能在过渡期间自行处理运动,因此您正确地指出无法延迟过渡。

尽管如此,您可能希望通过场景转换来实现淡入动画 (https://developer.android.com/training/transitions)。

它看起来像是一种更简洁的方式来处理您所暴露的情况。

代码解:

val transition = TransitionInflater.from(activity)
                .inflateTransition(android.R.transition.move)

sharedElementEnterTransition = transition
setEnterSharedElementCallback(object : SharedElementCallback() {
            override fun onMapSharedElements(
                names: MutableList<String>?,
                sharedElements: MutableMap<String, View>?
            ) {
                super.onMapSharedElements(names, sharedElements)
                fadeInContainer.loadAnimation(
                    activity,
                    R.anim.fade_in
                )
              }
        })

代码解决方案:

val transition = TransitionInflater.from(activity)
                .inflateTransition(android.R.transition.move)

sharedElementEnterTransition = transition
setEnterSharedElementCallback(object : SharedElementCallback() {
            override fun onMapSharedElements(
                names: MutableList<String>?,
                sharedElements: MutableMap<String, View>?
            ) {
                super.onMapSharedElements(names, sharedElements)
                fadeInContainer.loadAnimation(
                    activity,
                    R.anim.fade_in
                )
              }
        })