gpt4 book ai didi

android - 新导航架构中的圆形显示动画

转载 作者:行者123 更新时间:2023-12-02 12:03:19 24 4
gpt4 key购买 nike

我可以通过循环显示动画前往下一个目的地。我唯一的问题是前一个 fragment 消失了,除非我在我的操作中设置了淡出退出转换 app:exitAnim="@anim/exit_fade_out" .我想问是否有人能够在进行循环显示时保持前一个 fragment 可见。

这是显示和隐藏新 fragment 的代码.. 到目前为止,这可行,但我无法将前一个 fragment 显示为它掩盖下一个 fragment

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()
}

最佳答案

因此,如果您想知道如何保留前一个屏幕并为下一个屏幕制作圆形显示动画。我的解决方案是简单地添加一个新 fragment 。我不认为 Navigation组件允许这种类型的动画。早些时候,我做了一个共享元素转换,只要我在两个屏幕之间使用淡入/淡出转换,它就可以正常工作。通过这种方式,我能够在共享元素过渡播放时保留前一个屏幕。我在想 Navigation组件不断替换以下 fragment 。

关于android - 新导航架构中的圆形显示动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56878196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com