暂停和恢复Lottie动画

And*_*yce 4 android android-animation kotlin lottie-android

我正在实施一个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()
      }
 }
Run Code Online (Sandbox Code Playgroud)

任何意见,将不胜感激!

And*_*ton 9

您可以做的是使用LottieAnimationView,线程和标志的进度,这将允许您暂停某个进度并在需要再次播放动画时准确恢复

我创建了以下示例:

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
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

  • @hkchakladar 我正在使用`animationDrawable.repeatCount = LottieDrawable.INFINITE` 和`animationDrawable.repeatMode = LottieDrawable.RESTART`。 (2认同)

mr.*_*hir 6

animationView.setMinAndMaxProgress(0.0f, 0.5f);//set 50% animation //lottie version 2.7.0
Run Code Online (Sandbox Code Playgroud)

  • 您好,希尔先生,欢迎来到 stackoverflow,这是一个方便的提示,对您的答案的一些解释将使您的帖子更有价值和更受好评。=) (3认同)