Juan
Juan

Reputation: 171

How to detect that finish an animation Lottie and show a Toast

I have this code that shows an animation, I want to know how to show a Toast when the animation is over

@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());
        }
    });
    if(lottieAnimationLogo.getProgress() == 0f){
        animator.start();
    }else{
        lottieAnimationLogo.setProgress(0f);
    }
}

Upvotes: 3

Views: 3538

Answers (1)

punchman
punchman

Reputation: 1380

You can try set AnimatorListener:

animator.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            // show Toast
        }
    });

Or add listener for all lifecycle events:

animator.addListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationStart(Animator animation) {

        }

        @Override
        public void onAnimationEnd(Animator animation) {

        }

        @Override
        public void onAnimationCancel(Animator animation) {

        }

        @Override
        public void onAnimationRepeat(Animator animation) {

        }
    });

EDIT:

@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);
    }
}

Upvotes: 6

Related Questions