Я хочу использовать 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
)
Мне нужно знать, когда закончится эта анимация.
я могу справиться с продолжительностью анимации, которую я уже знаю от нашего дизайнера пользовательского интерфейса но это не хороший способ.
и в документации об этом ничего не сказано.
что мне делать?
В 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
}
}