Preciso parar uma animação de tradução em execução. O .cancel()
método de Animation
não tem efeito; a animação vai até o fim de qualquer maneira.
Como você cancela uma animação em execução?
Ligue clearAnimation()
para onde View
você ligou startAnimation()
.
setFillAfter()
provavelmente não faz o que você pensa que faz. Quando o evento de toque ocorrer, limpe a animação e ajuste seu layout para afetar qualquer alteração permanente que você deseja.No Android 4.4.4, parece que a única maneira de parar uma animação de desbotamento alfa em um View era a chamada
View.animate().cancel()
(ou seja, a chamada.cancel()
da ViewViewPropertyAnimator
).Aqui está o código que estou usando para compatibilidade antes e depois do ICS:
... com o método:
Aqui está a animação que estou parando:
fonte
.setListener(null);
isso me ajudou.Se você estiver usando o ouvinte de animação, defina
v.setAnimationListener(null)
. Use o seguinte código com todas as opções.fonte
v.setAnimation(null);
porque isso será feito emv.clearAnimation();
.Você deve usar .clearAnimation (); método no thread da interface do usuário:
fonte
O que você pode tentar fazer é obter a matriz de transformação da animação antes de pará-la e inspecionar o conteúdo da matriz para obter os valores de posição que você está procurando.
Aqui estão as APIs que você deve procurar
public boolean getTransformation (long currentTime, Transformation outTransformation)
public Matrix getMatrix ()
public void getValues (float[] values)
Então, por exemplo (algum pseudo-código. Eu não testei isso):
fonte
Use o método setAnimation (null) para interromper uma animação, exposta como método público em View.java , é a classe base de todos os widgets , usados para criar componentes interativos da interface do usuário (botões, 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)
fonte
Para interromper a animação, você pode definir o objectAnimator que não faz nada, por exemplo
primeiro, ao virar manualmente, há animação da esquerda para a direita:
quando mudar para inversão automática, não há animação
fonte