如何在没有 onActive 的情况下开始自动启动动画,并设置 animatedFloatAsState 的初始值
How can I start auto start an animation without onActive, and set the initial value for animatedFloatAsState
过去(在 alpha11 之前),我可以在触发可组合函数时将值设置为从 0 到 1 的动画,如下所示,我可以在其中设置 initialValue
以及 onActive
和 aniumateTo
.
val animatedProgress = animatedFloat(0f)
onActive {
animatedProgress.animateTo(
targetValue = 1f,
anim = infiniteRepeatable(
animation =
tween(durationMillis = 2000, easing = LinearEasing),
)
)
}
val t = animatedProgress.value
但是,现在在 alpha13 中,我找不到设置 initialValue
或 animateTo
的方法。 onActive
现在也已弃用。
我编码如下
val floatAnimation = animateFloatAsState(
targetValue = 1f,
animationSpec = infiniteRepeatable(
animation = tween(durationMillis = 2000, easing = LinearEasing),
)
)
我怎样才能...
- 设置初始值为0
- 开始动画(不需要状态布尔值来启动它)
- 重复从 0 到 1 的动画
看来我必须使用布尔值来更改状态并使用 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
不确定这是否是最好的编码方式。
您可以使用 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)
))
}
过去(在 alpha11 之前),我可以在触发可组合函数时将值设置为从 0 到 1 的动画,如下所示,我可以在其中设置 initialValue
以及 onActive
和 aniumateTo
.
val animatedProgress = animatedFloat(0f)
onActive {
animatedProgress.animateTo(
targetValue = 1f,
anim = infiniteRepeatable(
animation =
tween(durationMillis = 2000, easing = LinearEasing),
)
)
}
val t = animatedProgress.value
但是,现在在 alpha13 中,我找不到设置 initialValue
或 animateTo
的方法。 onActive
现在也已弃用。
我编码如下
val floatAnimation = animateFloatAsState(
targetValue = 1f,
animationSpec = infiniteRepeatable(
animation = tween(durationMillis = 2000, easing = LinearEasing),
)
)
我怎样才能...
- 设置初始值为0
- 开始动画(不需要状态布尔值来启动它)
- 重复从 0 到 1 的动画
看来我必须使用布尔值来更改状态并使用 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
不确定这是否是最好的编码方式。
您可以使用 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)
))
}