2013-11-27 6 views
28

Teraz jestem wykryciu końca mojego ValueAnimator sprawdzając kiedy postęp osiągnęła 100 ...Wykrywanie kiedy ValueAnimator odbywa

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

Czy to jest prawidłowy sposób? Czytałem dokumenty i nie mogłem znaleźć żadnego słuchacza lub wywołania zwrotnego, gdy zostanie ono zakończone. Próbowałem używać isRunning(), ale to nie działało tak dobrze.

Odpowiedz

88

można zrobić coś takiego:

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

To jest dokładnie to, czego szukałem, dzięki – Tyler

+0

Dziękuję bardzo :) – Alex

+0

Jest to bardzo stary temat, sorry , ale mam problem z tym związany. Używam detektora do wykrycia, kiedy moja animacja jest ukończona, ale jest wykonywana przed wykonaniem właściwej animacji. Czy ktoś w to wbiegł? Widziałem tematy z czymś podobnym do animacji niestandardowego widoku, a propozycja polegała na zastąpieniu metody "AnimationFinished", ale to nie działa dla animatora wartości. –