2011-05-26 16 views
5

Estoy muy cerca de hacer funcionar una animación de "inversión de moneda", pero debido a las limitaciones (¿fallas?) En el sistema de animación actual, no puedo encontrar un manera de mostrar AMBOS lados de una moneda volteando en el aire.Mostrando ambos lados de una moneda volteando usando la animación estándar de Android

Por ejemplo, I tienen la siguiente animación .XML:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"  
    android:shareInterpolator="false">  
     <scale 
      android:repeatCount="17" 
      android:repeatMode="reverse" 
       android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
      android:fromXScale="1.0" android:toXScale="1.0" 
      android:fromYScale="1.0" android:toYScale="0.0" 
      android:pivotX="50%"  android:pivotY="50%" 
      android:fillEnabled="true" 
      android:fillAfter="true" 
      android:duration="60" 
     />  
     <scale 
      android:repeatCount="1" 
      android:repeatMode="reverse" 
       android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
      android:fromXScale="1.0" android:toXScale="2.0" 
      android:fromYScale="1.0" android:toYScale="2.0" 
      android:pivotX="50%"  android:pivotY="50%" 
      android:fillEnabled="true" 
      android:fillAfter="true" 
      android:duration="800" 
     />  
     <translate 
      android:repeatCount="1" 
      android:repeatMode="reverse" 
      android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
      android:fromXDelta="0%" 
      android:toXDelta="0%" 
      android:fromYDelta="0%" 
      android:toYDelta="-150%" 
      android:fillEnabled="true" 
      android:fillAfter="true" 
      android:duration="800" 
     /> 
</set> 

Este "falsificaciones" una animación flipping escalando la moneda en el eje Y y de marcha atrás en un bucle. En combinación con esto, hay una escala para hacer que la animación general sea más grande, al mismo tiempo que la traduces hacia arriba y hacia abajo. Pero solo mostrará el lado de la moneda.

Intenté tener dos de estas animaciones, cada lado de la moneda, ejecutándose al mismo tiempo, pero no encuentro la forma de escalonarlas debido a que el REPEATCOUNT no funciona cuando se aplica a un Conjunto de Animación. De lo contrario, podría introducir algún tipo de retraso después de un anim (y antes del otro) para que alternen, dando la ilusión de que se está volteando una moneda.

¿Alguien sabe de qué manera puedo ajustar esto para obtener el resultado deseado?

Había pensado en renunciar y hacer un animado basado en cuadros (pre-renderizar el volteo como marcos), pero parece que no puedes mezclar Frame & Tween anims, así que perdería el flip "height" y efectos de "distancia".

(tengo otro problema cuando se trata de la moneda caiga - por ejemplo, el resultado final es al azar, pero estoy esperando que pueda cambiar en el resultado real al final)

Gracias de antemano!

Respuesta

1

Este código muestra el mismo procedimiento http://www.inter-fuser.com/2009/08/android-animations-3d-flip.html

+0

Gracias por eso Jaydeep. Me había topado con ese artículo antes, pero parecía un poco exagerado para lo que quería hacer. Además, no estaba seguro de cómo podría combinarlo con otros efectos (Zoom y Mover). Sin embargo, parece que es la única manera real de hacerlo ... –

2

que estaba buscando algo como esto a mí mismo, incluso con la escala de la imagen para que aparezca la imageview es cada vez más cerca de la pantalla.

Combiné su animación con esta solución para hacer exactamente lo que quería y es bastante liviana, sin perder la necesidad de múltiples vistas.

https://github.com/Lojko/Booty/blob/master/src/game/booty/BootyGameActivity.java

cambiado de lugar de la fuente original: http://www.jasoncavett.com/2011/05/changing-images-during-an-android-animation/#comments

Consulte la clase FlipCoin y cómo su usado, tengo una animación ya existente (creado de la misma manera como se detalla en el enlace)

+0

el enlace que mencionaste en la respuesta está muerto. –

+1

Tengo el código en GitHub, actualizaré la publicación con un enlace lo antes posible. – Lojko

+0

Encontré la página web modificada del enlace original, ¡si alguien está interesado en el futuro! – Lojko

Cuestiones relacionadas