Detect when Lottie's animation ends and show a Toast

0

I have the following code that shows an animation of Lottie, what I need to know is how to detect that I finish to be able to show a Toast:

public class SplashScreen extends AppCompatActivity {

LottieAnimationView lottieAnimationView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash_screen);
        lottieAnimationView = findViewById(R.id.lottieAnimationView);
        startCheckAnimation();
    }

private void startCheckAnimation(){
    ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f).setDuration(2500);
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener(){
            @Override
            public void onAnimationUpdate(ValueAnimator animation){ 
 lottieAnimationView.setProgress((Float)animation.getAnimatedValue());
            }
        });
        if(lottieAnimationView.getProgress() == 0f){
            animator.setStartDelay(500);
            animator.start();
        }else{
            lottieAnimationView.setProgress(0f);
        }
    }
}
    
asked by Juan 23.10.2018 в 05:10
source

1 answer

0

SOLVED:

An addListener is added to the animator and inside it an onAnimationEnd function that detects when the animation is over and when it is detected I show the Toast

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash_screen);

    lottieAnimationLogo = findViewById(R.id.lottieAnimationLogo);

    startCheckAnimationLogo();

}

private void startCheckAnimationLogo(){
    ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f).setDuration(3000);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener(){
    @Override
    public void onAnimationUpdate(ValueAnimator animation){
 lottieAnimationLogo.setProgress((Float)animation.getAnimatedValue());
    }
});
animator.addListener(new AnimatorListenerAdapter() {
    @Override
    public void onAnimationEnd(Animator animation) {
        super.onAnimationEnd(animation);
        Toast.makeText(this, "Text", Toast.LENGTH_SHORT).show();
    }
});
if(lottieAnimationLogo.getProgress() == 0f){
    animator.start();
}else{
    lottieAnimationLogo.setProgress(0f);
  }
}
    
answered by 23.10.2018 / 07:15
source