Реактивный ранец сочиняет Lottie addAnimataionListener

Я хочу использовать Lottie в Jetpack Compose. вот мой код

val logoAnimationComposition by rememberLottieComposition(
    spec = LottieCompositionSpec.RawRes(
        resId = R.raw.twitter_logo_motion
    )
)
val logoAnimationProgress by animateLottieCompositionAsState(
    composition = logoAnimationComposition,
    isPlaying = true
)
LottieAnimation(
    modifier = Modifier.size(
        size = logoSize
    ),
    composition = logoAnimationComposition,
    progress = logoAnimationProgress
)

Мне нужно знать, когда закончится эта анимация.

я могу справиться с продолжительностью анимации, которую я уже знаю от нашего дизайнера пользовательского интерфейса но это не хороший способ.

и в документации об этом ничего не сказано.

что мне делать?

1
0
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В Compose мы не используем прослушиватели, вместо этого мы должны читать состояние и реагировать на его изменения.

Вам нужно удалить делегирование из animateLottieCompositionAsState, тогда у вас будет доступ к гораздо большему количеству информации, например, вы можете проверить isAtEnd.

С помощью простого if вы можете отобразить другой вид или выполнить какую-либо работу, используя побочные эффекты:

val logoAnimationState = animateLottieCompositionAsState(
    composition = logoAnimationComposition,
    isPlaying = true
)
LottieAnimation(
    modifier = Modifier.size(
        size = logoSize
    ),
    composition = logoAnimationComposition,
    progress = logoAnimationState.progress
)
if (logoAnimationState.isAtEnd) {
    LaunchedEffect(Unit) {
        // to your job
    }
}

Другие вопросы по теме