Necesito detener una animación de traducción en ejecución. El .cancel()
método de Animation
no tiene efecto; la animación va hasta el final de todos modos.
¿Cómo cancelas una animación en ejecución?
Llamar clearAnimation()
en lo View
que llamó startAnimation()
.
setFillAfter()
todos modos, probablemente no haga lo que crees que hace. Cuando ocurra el evento táctil, borre la animación y luego ajuste su diseño para afectar cualquier cambio permanente que busque.En Android 4.4.4, parece que la única forma en que podría detener una animación de desvanecimiento alfa en una Vista fue llamando
View.animate().cancel()
(es decir, llamando.cancel()
a la VistaViewPropertyAnimator
).Aquí está el código que estoy usando para compatibilidad antes y después de ICS:
... con el método:
Aquí está la animación que estoy deteniendo:
fuente
.setListener(null);
Esto me ayudó.Si está utilizando el oyente de animación, establezca
v.setAnimationListener(null)
. Use el siguiente código con todas las opciones.fuente
v.setAnimation(null);
porque esto se hará env.clearAnimation();
.Debe usar .clearAnimation (); método en el hilo de la interfaz de usuario:
fuente
Lo que puede intentar hacer es obtener la matriz de transformación de la animación antes de detenerla e inspeccionar el contenido de la matriz para obtener los valores de posición que está buscando.
Aquí están las API que deberías mirar
public boolean getTransformation (long currentTime, Transformation outTransformation)
public Matrix getMatrix ()
public void getValues (float[] values)
Entonces, por ejemplo (algunos pseudocódigo. No he probado esto):
fuente
Use el método setAnimation (nulo) para detener una animación, expuesta como método público en View.java , es la clase base para todos los widgets , que se utilizan para crear componentes interactivos de la interfaz de usuario (botones, campos de texto, etc.).
/** * Sets the next animation to play for this view. * If you want the animation to play immediately, use * {@link #startAnimation(android.view.animation.Animation)} instead. * This method provides allows fine-grained * control over the start time and invalidation, but you * must make sure that 1) the animation has a start time set, and * 2) the view's parent (which controls animations on its children) * will be invalidated when the animation is supposed to * start. * * @param animation The next animation, or null. */ public void setAnimation(Animation animation)
fuente
Para detener la animación, puede establecer un objeto ObjectAnimator que no haga nada, p. Ej.
primero cuando el volteo manual hay animación de izquierda a derecha:
luego, al cambiar a cambio automático, no hay animación
fuente