过去(在 alpha11 之前),我可以在触发可组合函数时为从 0 到 1 的值设置动画,如下所示,我可以在其中设置 initialValue
并且还具有 onActive
和 {{1} }.
aniumateTo
但是,现在在 alpha13 中,我找不到设置 val animatedProgress = animatedFloat(0f)
onActive {
animatedProgress.animateTo(
targetValue = 1f,
anim = infiniteRepeatable(
animation =
tween(durationMillis = 2000, easing = LinearEasing),
)
)
}
val t = animatedProgress.value
或 initialValue
的方法。 animateTo
现在也已弃用。
我编码如下
onActive
我怎么能...
答案 0 :(得分:2)
您可以使用 Animatable
API 和 LaunchedEffect
组合。您不需要布尔值来启动动画。
类似于:
val animatedAlpha = remember { Animatable(0f) }
Box(
Modifier
.background(color = (Color.Blue.copy(alpha = animatedAlpha.value)))
.size(100.dp,100.dp)
)
LaunchedEffect(animatedAlpha) {
animatedAlpha.animateTo(1f,
animationSpec = infiniteRepeatable(
animation = tween(durationMillis = 2000, easing = LinearEasing)
))
}
答案 1 :(得分:0)
看起来我必须使用布尔值来更改状态并使用 LaunchEffect
来启动和更改状态,如下所示。
var start by remember{ mutableStateOf(false) }
val floatAnimation = animateFloatAsState(
targetValue = if (start) 1f else 0f,
animationSpec = infiniteRepeatable(
animation = tween(durationMillis = 2000, easing = LinearEasing),
)
)
LaunchedEffect(true) {
start = true
}
val t = floatAnimation.value
不确定这是否是最好的编码方式。