2013-11-27 3 views
28

Сейчас я обнаружения конца моего ValueAnimator, проверяя, когда прогресс достиг 100 ...обнаруживая при ValueAnimator делается

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

Является ли это правильный путь? Я прочитал документы и не смог найти ни одного слушателя или обратного вызова, когда он будет завершен. Я пробовал использовать isRunning(), но это не сработало.

ответ

88

Вы можете сделать что-то вроде:

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(); 

[] s

+1

Это именно то, что я искал, спасибо – Tyler

+0

Огромное спасибо :) – Alex

+0

Это очень старая тема, извините , но у меня возникла проблема, связанная с этим. Я использую прослушиватель, чтобы определить, когда моя анимация закончена, но она выполняется до того, как будет выполнена фактическая анимация. Кто-нибудь еще работает с этим? Я видел темы с чем-то похожим для анимации пользовательского представления, и было предложено переопределить метод AnimationFinished, но это не работает для аниматора значений. –

Смежные вопросы