web-dev-qa-db-ja.com

ロッティアニメーションの一時停止と再開

Lottieアニメーションを実装していますが、アニメーション全体がうまく機能しています。ただし、30フレーム後にアニメーションを一時停止し、一定時間後に再開できるコードを少し追加したいと思います。これがこれまでのコードです

animationView.playAnimation(0, 30)
animationView.addAnimatorListener(object : Animator.AnimatorListener {
   override fun onAnimationEnd(animation: Animator) {
      if (isLoading == false) {
         //Everything has loaded. Continue Animation 

         //This line has no effect. The animation does not continue
         animationView.playAnimation(30, 60)
         //Resuming the animation just makes the animation disappear
         //animation.resume()
      }
 }

アドバイスをいただければ幸いです。

5
Andy Joyce

あなたができることは、LottieAnimationView、スレッド、およびフラグからprogressを使用することです。これにより、特定の進行状況でpauseを実行でき、resume正確にアニメーションをもう一度再生する必要があります

次の例を作成しました。

animationView.playAnimation()
animationView.loop(false)

isAnimating = true // Setup your flag

thread {
    while (isAnimating){ // Loop that checks the progress of your animation
        if (animationView.progress >= 0.5f){// If animation reaches 50%
            runOnUiThread {
                animationView.pauseAnimation()// Pause Animation
            }
            Thread.sleep(5000) // Pause for 5 seconds
            runOnUiThread {
                animationView.playAnimation(0.5f,1f) // Resume your animation from 50% to 100%
            }
            isAnimating = false
        }
        if(animationView.progress >= 1f){ // If animation reaches 100% stop animation
            runOnUiThread {
                animationView.cancelAnimation()
                isAnimating = false
            }
        }
    }
}

それが役に立てば幸い。

9
Andre Breton
animationView.setMinAndMaxProgress(0.0f, 0.5f);//set 50% animation //lottie version 2.7.0
0
mr.hir