Android 打开“活动jetpack compose”时,创建动画图像,并显示延迟和持续时间

Android 打开“活动jetpack compose”时,创建动画图像,并显示延迟和持续时间,android,kotlin,android-jetpack,android-jetpack-compose,Android,Kotlin,Android Jetpack,Android Jetpack Compose,我需要你的帮助。 所有的东西都在标题里,我不知道怎么才能做到。。。请帮帮我。 我使用了很多东西,比如tween、enum类和其他,但都不起作用,我想要一个初始值200dp,当活动打开时,在2秒钟后,图像从200dp变为100dp。 谢谢。使用1.0.0-beta04您可以使用API和LaunchedEffect组合 val animatedProgress = remember { Animatable(1f) } LaunchedEffect(animatedProgress) {

我需要你的帮助。

所有的东西都在标题里,我不知道怎么才能做到。。。请帮帮我。 我使用了很多东西,比如tween、enum类和其他,但都不起作用,我想要一个初始值200dp,当活动打开时,在2秒钟后,图像从200dp变为100dp。
谢谢。

使用
1.0.0-beta04
您可以使用API和
LaunchedEffect
组合

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}
)


感谢关于
.graphicsLayer
的提示,@Gabrial的回答非常完美,但是可以通过使用图形层属性而不是大小进行优化,这将导致更好的性能,因为在动画期间不会进行重新编译

编辑。没有冒犯 @加布里尔。 您的anser仍将触发重新编译,因为您没有使用带有lambda修改器的图形层

根据文件 如果图层参数由androidx.compose.runtime.State或动画值支持,则首选GraphicsLayerScope上带有lambda块的重载,因为读取块内的状态只会导致图层属性更新,而不会触发重新定位和重新调整

所以上面的代码snippit应该是这样的

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
}

非常感谢。就是这样,因为在beta 3和更早版本中,我对这种类型的动画感到非常困惑谢谢!我要这个,你说得对。谢谢你的更正。