L oop Lott ie анимация из определенного кадра - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь l oop анимация между определенными кадрами, но я не вижу анимацию вообще, и если я удаляю код LottieCompositionFactory....addListener и просто использую файл xml, анимация отображается, но, Я хочу запустить анимацию между определенными кадрами:

class OnboardingFragment : Fragment() {
  ...
  ...
  private var myComposition: LottieComposition? = null
  ...
  override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

    LottieCompositionFactory.fromRawRes(context, R.raw.my_animation)
                .addListener {
                    myComposition = it
                    Log.d(TAG, "Is animation displaying: $myComposition") //does print the LottieComposition
                    with(lottieAnimation) {
                        alpha = 0F
                        visibility = View.VISIBLE
                        myComposition?.let { it1 -> setComposition(it1) }
                        repeatCount = ValueAnimator.INFINITE
                        setMinAndMaxFrame(29, 219)
                        playAnimation()
                    }
                }
                .addFailureListener {
                    Log.e(TAG, "Error displaying animation: ${it.message}")
                }

и файлом макета:

<androidx.constraintlayout.widget.ConstraintLayout
...
...
<com.airbnb.lottie.LottieAnimationView
        android:id="@+id/lottieAnimation"
        android:layout_width="170dp"
        android:layout_height="146dp"
        android:layout_marginBottom="34dp"
        android:scaleType="fitStart"
        app:layout_constraintBottom_toTopOf="@+id/title"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/topGuide"
        app:lottie_autoPlay="true"
        app:lottie_loop="true"/>

Я попытался добавить app:lottie_rawRes="@raw/my_animation" в макете выше, но это ничего не изменило .

1 Ответ

0 голосов
/ 16 марта 2020

Итак, я пошел с этим подходом, хотя мне не нравится, что я использую android.animation.Animator, android.animation.ValueAnimator вместе с LottieAnimation:

  private fun setupAnimation(lottieAnimation: LottieAnimationView) {
        lottieAnimation.addAnimatorListener(object : Animator.AnimatorListener {
            override fun onAnimationStart(anim: Animator?) {
            }

            override fun onAnimationEnd(anim: Animator?) {
                lottieAnimation.removeAllAnimatorListeners()
                lottieAnimation.repeatCount = ValueAnimator.INFINITE
                lottieAnimation.setMinAndMaxFrame(25, 147)
                lottieAnimation.playAnimation()
            }

            override fun onAnimationRepeat(anim: Animator?) {
            }

            override fun onAnimationCancel(anim: Animator?) {
            }
        })
    }

и удалил app:lottie_loop="true" из макет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...