我有一个AnimatedFloat
是我使用创建的
val animatedFloat = animatedFloat(0f)
我使用以下动画开始
animatedFloat.animateTo(
targetValue = 1f,
anim = repeatable(
iterations = AnimationConstants.Infinite,
animation = tween(durationMillis = 2000, easing = LinearEasing),
)
)
所有这些都起作用,并且它在2秒内开始从0f移到1f。
当我使用以下命令停止它时,它会停止运行。
animatedFloat.stop()
但是,当我使用相同的animateTo
函数重新启动它时,
animatedFloat.animateTo(
targetValue = 1f,
anim = repeatable(
iterations = AnimationConstants.Infinite,
animation = tween(durationMillis = 2000, easing = LinearEasing),
)
)
它不再从0f开始。它从先前停止的值开始。不仅如此,从先前停下来到目标值所需的时间也相同
例如如果它在0.7f处停止,则从0.7f
到1.0f
将需要2秒钟的时间,这会减慢更改速度。
停止initialValue
后如何重置?
答案 0 :(得分:1)
stop
函数只是停止动画,它不会重置该值。
您可以使用animatedFloat.snapTo(0f)
将值立即设置为0f,而无需任何动画。
https://developer.android.com/reference/kotlin/androidx/compose/animation/core/AnimatedFloat#snapto
答案 1 :(得分:0)
AnimatedFloat
围绕流动性而设计。它假定在大多数情况下,跳过到另一个值是不理想的。这就是为什么它会停在原处,并在下次调用animateTo
时从停下来的地方开始。您能否分享暂停/恢复动画的用例?