2010-10-12 9 views
25

Mam ImageView, na którym zastosowałem animację obracania. Ponieważ chcę iść na obrót ciągły, dałem repeatCount jako nieskończony w moim rotate.xml:Android: Jak mogę zatrzymać nieskończoną animację zastosowaną w ImageView?

android:repeatCount="infinite" 

W onCreate(), załadować animację i uruchomić go.

Animation myAnim = AnimationUtils.loadAnimation(this, R.anim.rotate); 
objectImg.startAnimation(myAnim); 

Po naciśnięciu przycisku obrót musi się zatrzymać. Stąd w moim onClick(), nazwałem clearAnimation().

objectImg.startAnimation(myAnim); 

Moje proste pytanie dotyczy tego, czy zatrzymanie animacji jest właściwe. Zakładam, że clearAnimation() odpowiada loadAnimation(), ale nie ma funkcji stopAnimation(), która odpowiada funkcji startAnimation().

Odpowiedz

26

Można również zadzwonić pod numer anim.cancel();, ale należy również natychmiast zadzwonić pod numer anim.reset();. Następnie, jeśli chcesz uruchomić go ponownie, po prostu zadzwoń pod numer startAnimation w widoku.

+0

ok, sprawdzę to również. – kiki

+2

animation.cancel(); wymaga poziomu API 8, aby zatrzymać animację w API 7 i powyżej jedyną opcją jest view.clearAnimation(); –

+0

'cancel()' po prostu zresetuje całą animację do stanu początkowego. Ale jak zachować ostatni stan zatrzymania? –

52

Użyj przycisku clearAnimation(), aby zatrzymać animację. Nie ma loadAnimation() na View.

+0

Ok, dzięki. Tak więc tylko startAnimation() i clearAnimation() mogą być wykorzystywane do widoków. – kiki

+0

clearAnimation() nie działał dla mnie, setAnimation (null) zrobił – Leon

+0

Hi @CommonsWare możesz mi powiedzieć, jak zatrzymać animację onClick z samego widoku, który jest animowany, ale nie jako oddzielny przycisk? – Raghavendra

Powiązane problemy