2009-10-26 6 views
9

Me gustaría hacer crecer una vista con cada clic con ScaleAnimation. He logrado que los efectos de la animación persistan después de que haya terminado con fillAfter, pero el problema ahora es que la animación siempre comienza desde el estado 0 (como se define la vista en el XML): al hacer clic en la vista se restablece y se anima al estado que fue justo después de la primera animación.Android ScaleAnimation

La animación está definida en un XML:

<scale 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:fromXScale="1" 
    android:toXScale="1.5" 
    android:fromYScale="1" 
    android:toYScale="1.5" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="1000" 
    android:fillAfter="true" 
/> 

Respuesta

26

He resuelto el problema al no tener que recurrir a la animación definida en el XML, sino más bien haciendo

anim = new ScaleAnimation(from, to, from, to, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 

y el ajuste de/a cada vez que necesitaba para expandirla. No estoy tan seguro de que eso sea bueno en cuanto a rendimiento, pero funciona bien.

1

¿Cómo se define exactamente la animación?

Al definir ScaleAnimation con código Java, puede establecer desde X/desde Y (mirar here) factores de escala iniciales, así que supongo que puede hacer lo mismo con los atributos XML.

+0

Puede, pero asume el tamaño original. – Anze

+0

También arreglé la pregunta para incluir la definición xml :). – Anze

Cuestiones relacionadas