android - 如何在没有 onActive 的情况下启动自动启动动画,并为 animatedFloatAsState 设置初始值
问题描述
在过去(在 alpha11 之前),我可以在触发可组合函数时将值从 0 设置为 1,如下所示,我可以在其中设置initialValue
并拥有onActive
with 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 的动画
解决方案
您可以使用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)
))
}
推荐阅读
- javascript - 使用overflow-x时无法计算document.body.pageYOffset:隐藏在我的css中
- cups - 即使 avahi-resolve-host-name 成功,也无法使用 getent 解析 .local 域
- r - 使用重值对 R 中数值列的范围进行分类
- python - 与范围相关的 django 相关字段过滤器
- python - 根据用户获取最新的直接消息 + 发件人 ID - Tweepy
- java - 如何获取 zip 文件中所有目录的列表
- javascript - 如何将外部 js 文件链接到 reactjs 应用程序并在反应应用程序中进行更改?
- spring - 从一个 Rest Service 到另一个 Rest Service 进行异步(异步)时如何不丢失 Request 属性
- python-3.x - 在列表中查找相同值的索引的最快方法
- php - 致命错误:未捕获的错误:不是 Hack 文件。HHVM 可以运行 .php 文件吗?