Jetpack ComposeInfiniteRepeatable,重复startDelay

Ehs*_*msz 6 android android-animation android-jetpack-compose

我想用一次性start delayJetpack Compose.

infiniteRepeatable()用过tween()

val value by rememberInfiniteTransition().animateFloat(
    initialValue = 0f,
    targetValue = 1f,
    animationSpec = infiniteRepeatable(
        animation = tween(
            durationMillis = 700,
            delayMillis = 200
        )
    )
)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,delayMillis将重复:

*delay* 0..1, *delay* 0..1, *delay* 0..1 , *delay* 0..1  ...
Run Code Online (Sandbox Code Playgroud)

但在ValueAnimator其中start delay是一次性延迟:

*delay* 0..1, *delay* 0..1, *delay* 0..1 , *delay* 0..1  ...
Run Code Online (Sandbox Code Playgroud)
*delay* 0..1, 0..1, 0..1, 0..1, 0..1, 0..1, 0..1  ...
Run Code Online (Sandbox Code Playgroud)

InfiniteRepeatable有没有办法为in设置一次性启动延迟Jetpack Compose

谢谢

Gab*_*tti 9

目前尚不支持 ( 1.0.0-beta07) 个非重复延迟。

您可以将动画更改为以下内容:

val animatedFloat = remember { Animatable(0f) }

LaunchedEffect(animatedFloat) {
    delay(200) // to avoid repeated delays
    animatedFloat.animateTo(
        targetValue = 1f, animationSpec = infiniteRepeatable(
            animation = tween(700, easing =  FastOutSlowInEasing),
            repeatMode = RepeatMode.Reverse
        )
    )
}
Run Code Online (Sandbox Code Playgroud)