Jetpack Compose 中图像的无限旋转

Sol*_*vek 15 animation android android-jetpack-compose

如何让我的图像无限旋转?

这是我的代码,但动画不起作用

 val angle: Float by animateFloatAsState(
            targetValue = 360F,
            animationSpec = infiniteRepeatable(
                tween(2000))
        )
        Image(
            painter = painterResource(R.drawable.sonar_scanner),
            "image",
            Modifier
                .fillMaxSize()
                .rotate(angle),
            contentScale = ContentScale.Fit
        )
Run Code Online (Sandbox Code Playgroud)

Gab*_*tti 35

您可以使用InfiniteTransitionusing rememberInfiniteTransition.
就像是

val infiniteTransition = rememberInfiniteTransition()
val angle by infiniteTransition.animateFloat(
    initialValue = 0F,
    targetValue = 360F,
    animationSpec = infiniteRepeatable(
        animation = tween(2000, easing = LinearEasing)
    )
)
Run Code Online (Sandbox Code Playgroud)

只是一个注释。
而不是使用

Modifier.rotate(angle)
Run Code Online (Sandbox Code Playgroud)

您可以使用

     Modifier
        .graphicsLayer {
            rotationZ = angle
        }
Run Code Online (Sandbox Code Playgroud)

您可以在文档中查看:

当您具有由 aandroidx.compose.runtime.State或动画值支持的图层属性时,首选此版本,因为读取内部状态block只会导致图层属性更新,而不会触发重组和重新布局。