Detecting when ValueAnimator is done

android, android-animation

Solution

You can do something like:

ValueAnimator anim = ValueAnimator.ofInt(progress, seekBar.getMax());
anim.setDuration(Utility.setAnimationDuration(progress));
anim.addUpdateListener(new AnimatorUpdateListener() 
{
    @Override
    public void onAnimationUpdate(ValueAnimator animation) 
    {
        int animProgress = (Integer) animation.getAnimatedValue();
        seekBar.setProgress(animProgress);
    }
});
anim.addListener(new AnimatorListenerAdapter() 
{
    @Override
    public void onAnimationEnd(Animator animation) 
    {
        // done
    }
});
anim.start();

Problem

Right now I am detecting the end of my ValueAnimator by checking when the progress has reached 100... ``` //Setup the animation ValueAnimator anim = ValueAnimator.ofInt(progress, seekBar.getMax()); //Set the duration anim.setDuration(Utility.setAnimationDuration(progress)); anim.addUpdateListener(new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { int animProgress = (Integer) animation.getAnimatedValue(); if ( animProgress == 100) { //Done } else { seekBar.setProgress(animProgress); } } }); ``` Is this the correct way? I read through the docs and couldn't find any kind listener or callback for when it completes. I tried using `isRunning()` but it didn't work as well.

Original source