要实现无限循环动画,可以使用Android Compose中的animate*AsState函数和LaunchedEffect函数。下面是一个示例代码,实现一个无限循环的闪烁动画:

import androidx.compose.animation.core.*
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp

@Composable
fun BlinkingAnimation() {
    val color by animateColorAsState(
        targetValue = if (isBlinking) Color.Red else Color.Transparent,
        animationSpec = infiniteRepeatable(
            animation = tween(durationMillis = 500),
            repeatMode = RepeatMode.Reverse
        )
    )

    LaunchedEffect(Unit) {
        isBlinking = true
        onDispose { isBlinking = false }
    }

    Surface(
        color = MaterialTheme.colors.background,
        modifier = Modifier.fillMaxSize()
    ) {
        Canvas(modifier = Modifier.fillMaxSize()) {
            drawCircle(
                color = color,
                radius = 50.dp.toPx(),
                center = Offset(size.width / 2, size.height / 2)
            )
        }
    }
}

var isBlinking by mutableStateOf(false)

在上面的代码中,我们使用animateColorAsState函数来创建一个动画状态,根据isBlinking的值来切换颜色。然后,我们使用infiniteRepeatable函数来创建一个无限循环的动画,使用tween指定动画的持续时间为500毫秒,并且在动画结束后反向播放。最后,我们使用LaunchedEffect函数来在组件被创建时启动动画,并在组件被销毁时停止动画。

Canvas中,我们使用drawCircle函数来绘制一个圆,颜色根据动画状态变化。这样就实现了一个无限循环的闪烁动画。

你可以将上述代码添加到Compose项目中的任何组件中,然后在UI中使用BlinkingAnimation组件来显示动画效果

android compose实现无限循环动画

原文地址: https://www.cveoy.top/t/topic/iC4d 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录