Я хочу выровнять прогресс анимации Lottie с помощью прокрутки RecyclerView или ViewPager.Однако Лотти, кажется, показывает только «настоящие» кадры и не интерполирует их.При нормальном воспроизведении анимации этого не происходит, и Лотти интерполирует кадры.Если я прокручиваю очень медленно, я вижу, что мой RecyclerView прокручивает, но Lottie не обновляет фреймы.Вот что я сейчас делаю:
recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
val offset = recyclerView.computeHorizontalScrollOffset()
val extent = recyclerView.computeHorizontalScrollExtent()
val range = recyclerView.computeHorizontalScrollRange()
val percentage = offset.toFloat() / (range.toFloat() - extent.toFloat())
lottieAnimationView.progress = percentage
}
}
Та же проблема возникает, когда я пытаюсь обновить прогресс в ValueAnimator, например:
val valueAnimator = ValueAnimator.ofFloat(0f, 1f)
valueAnimator.duration = 30000
valueAnimator.addUpdateListener { animation ->
lottieAnimationView.progress = animation.animatedFraction
}
valueAnimator.start()
Я не уверен, что пропустилчто-то или это не поддерживается Лотти.Похоже, что работает с iOS.
Вот пример видео моей проблемы.Верхняя анимация выполняется через playAnimation
, нижняя - через valueAnimator
и setProgress
: