android - 在打开活动喷气背包组合时创建具有延迟和持续时间的动画图像
问题描述
我需要你的帮助。
一切都在标题中,我无法弄清楚我该怎么做...请帮助我。我使用了很多东西,比如补间、枚举类和其他,但没有用,我想要一个 200dp 的初始值,当活动打开时,2 秒后,图像在 2 秒内从 200dp 变为 100dp。谢谢你。
解决方案
@Gabrial 的答案是完美的,但可以通过使用图形图层属性而不是大小进行优化,这将导致更好的性能,因为在动画期间不会发生重组。
编辑。没有冒犯 @Gabrial。您的分析器仍会触发重组,因为您没有使用带有 lambda 修饰符的图形层。
根据文档,如果图层参数由 androidx.compose.runtime.State 或动画值支持,则更喜欢在 GraphicsLayerScope 上使用 lambda 块的重载,因为读取块内的状态只会导致图层属性更新而不会触发重组和重新布局.
所以上面的代码片段应该是这样的
val animatedProgress = remember { Animatable(1f) }
LaunchedEffect(animatedProgress) {
animatedProgress.animateTo(0.5f,
animationSpec = tween(
durationMillis = 2000,
delayMillis = 2000
))
}
Image(
painterResource(id = R.drawable.xxx), "contentDescription",
modifier = Modifier
.size(100.dp)
.graphicsLayer{
scaleY = animatedProgress.value,
scaleX = animatedProgress.value
}
推荐阅读
- c# - 在生产环境中评估 Tensorflow 模型的最快方法(如果可能,在 C# 下)
- python - TensorFlow 负输出
- flutter - 通过构建器添加后如何向上/向下移动 ListView
- sql - 在保留时间的 SQL 存储过程中将 datetime 转换为 smalldatetime?
- python - 在哪里可以查看内置 Python 方法 id() (Python 3.x) 的代码?
- javascript - 如何使用 MutationObservers 来查找元素的父元素何时从 DOM 中删除?
- excel - 在 Excel 2007 中,为什么拖动手动水平分页会导致以前的自动分页变为手动..?
- javascript - 可滚动模式内的引导 DateTimePicker
- python - django-celery-twisted 供电 GPS 跟踪系统的最佳方法
- java - 如何从否则返回集合的方法返回错误消息