我可以用圆形揭示动画去我的下一个目的地。我唯一的问题是上一个片段消失了,除非我在动作app:exitAnim="@anim/exit_fade_out"
中设置了淡出退出过渡。我想问一问,在进行循环显示时是否有人能够保持先前的片段可见。
这是用于显示和隐藏新片段的代码。.到目前为止,它仍然有效,但是我无法显示前一个片段作为掩盖下一个片段的
private val maxScreenDimension : Float
get() {
return max(container.width, container.height).toFloat()
}
private fun circularReveal(point: Point) {
val viewTreeObserver = container.viewTreeObserver
if (viewTreeObserver.isAlive) {
viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
doCircularReveal(point)
container.viewTreeObserver.removeOnGlobalLayoutListener(this)
}
})
}
}
private fun doCircularReveal(point: Point) {
val initRadius = 0f
val finalRadius = maxScreenDimension
val circularReveal = ViewAnimationUtils.createCircularReveal(
container,
point.x,
point.y,
initRadius,
finalRadius
)
circularReveal.duration = resources.getInteger(R.integer.circular_animation_out).toLong()
circularReveal.start()
}
private fun circularHide(point: Point) {
val initRadius = maxScreenDimension
val finalRadius = 0f
val circularReveal = ViewAnimationUtils.createCircularReveal(
container,
point.x,
point.y,
initRadius,
finalRadius
)
circularReveal.duration = resources.getInteger(R.integer.circular_animation_in).toLong()
circularReveal.doOnEnd {
container.isVisible = false
findNavController().popBackStack()
}
circularReveal.start()
}
答案 0 :(得分:0)
因此,以防万一您想知道如何保留上一个屏幕并为下一个屏幕做循环显示动画。我的解决方案是简单地添加一个新片段。我认为Navigation
组件不支持此类动画。早些时候,我做了一个共享元素过渡,只要我在两个屏幕之间使用淡入/淡出过渡,就可以正常工作。这样,在共享元素过渡播放时,我可以保留上一个屏幕。我认为Navigation
组件正在不断替换以下片段。