android compose实现无限循环动画
要实现无限循环动画,可以使用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组件来显示动画效果
原文地址: https://www.cveoy.top/t/topic/iC4d 著作权归作者所有。请勿转载和采集!