2010-10-12 8 views
25

Tengo un ImageView en el que he aplicado una animación de rotación. Ya que quiero ir a la rotación en forma continua, que nos dio el repeatCount como infinito en mi rotate.xml:Android: ¿Cómo puedo detener una animación infinita aplicada a un ImageView?

android:repeatCount="infinite" 

En onCreate(), me carga la animación y la comienzo.

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

Cuando se presiona un botón, la rotación debe detenerse. Por lo tanto, en mi onClick(), llamé a clearAnimation().

objectImg.startAnimation(myAnim); 

Mi pregunta simple es si detener la animación es lo correcto. Supongo que clearAnimation() corresponde a loadAnimation(), pero no hay stopAnimation() que corresponda a startAnimation().

Respuesta

26

También puede llamar al anim.cancel(); pero también debe llamar al anim.reset(); inmediatamente después. Luego, cuando desee volver a iniciarlo, simplemente llame al startAnimation en la vista.

+0

bien, voy a verificar esto también. – kiki

+2

animation.cancel(); requiere API nivel 8, para detener la animación en API 7 y superior, la única opción es view.clearAnimation(); –

+0

'cancel()' simplemente restablecería toda la animación al estado inicial. Pero, ¿cómo mantener el último estado parado? –

52

Utilice clearAnimation() para detener una animación. No hay loadAnimation() en View.

+0

Ok, gracias. Por lo tanto, solo startAnimation() y clearAnimation() son aplicables a las vistas. – kiki

+0

clearAnimation() no funcionó para mí, setAnimation (null) hizo – Leon

+0

Hola @CommonsWare ¿me puede decir cómo detener la animación en el clic de la vista que está animando pero no como un botón separado? – Raghavendra

Cuestiones relacionadas