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.