2012-07-02 10 views
9

Estoy recibiendo este extraño problema. Básicamente estoy animando una vista con animación de traducción. (Traducir en la pantalla y fuera a través de 2 eventos diferentes) Mi código para traducir animación es:Traducir animación funciona perfectamente cuando se define con XML y solo una vez perfectamente por código - Android

final Animation animtopOut = new TranslateAnimation(0, 0, 0, -mainHeaderlayout.getMeasuredHeight()); 
        animtopOut.setDuration(500); 
        animtopOut.setFillAfter(true); 
mainHeaderlayout.setAnimation(animtopOut); 

Y el código XML es:

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fillAfter="true" 
    android:interpolator="@android:anim/accelerate_interpolator" > 

<translate 
    android:fromYDelta="0%p" 
    android:toYDelta="-99%p" 
    android:duration="600" 
    android:fillAfter="true"> 

</translate> 
</set> 

Si se establece utilizando el código:

final Animation animtopOut = AnimationUtils.loadAnimation(mContext, R.anim.header_animate_out); 

Cuando disparo la animación, funciona bien si uso las propiedades de animación xml. El problema es cuando lo uso por código. Que es lo que quiero Se ejecuta con animación de traducción solo por primera vez. La segunda vez, cuando se activa, la vista se encuentra dentro de la pantalla sin animación. Por favor, alguien me ayude si me faltan propiedades. Gracias.


EDIT: (información adicional)

En realidad, hay dos animaciones diferentes que se activan en el mismo punto de vista a través de dos eventos diferentes. De hecho, he publicado una propiedad de animación. El otro es casi lo mismo. con solo los valores son diferentes.

Respuesta

3

Ha intentado configuración de la animación como esta

animtopOut.setRepeatCount(Animation.INFINITE); 

animtopOut.setRepeatMode(Animation.RESTART); 

animtopOut.setInterpolator(new LinearInterpolator()); 

?

+0

En mi caso esta línea hizo mi día: animtopOut.setInterpolator (new LinearInterpolator()); – Yazon2006

Cuestiones relacionadas