El gran libro de programación avanzada con Android. José Enrique Amaro Soriano

Чтение книги онлайн.

Читать онлайн книгу El gran libro de programación avanzada con Android - José Enrique Amaro Soriano страница 6

El gran libro de programación avanzada con Android - José Enrique Amaro Soriano El gran libro de

Скачать книгу

2.6. Serie de animaciones.

      Las animaciones interpoladas se pueden programar enteramente en Java sin utilizar ficheros de animación xml. Una animación es un objeto de una de las clases AlphaAnimation, ScaleAnimation, RotateAnimation o TraslateAnimation. En el constructor se indican todas las propiedades que hemos visto en xml. Una serie de animaciones es un objeto de la clase AnimationSet. Cada animación individual se añade a la serie mediante serie.addAnimation(animacion). Hay que recordar que la repetición de animaciones con setRepeatMode() no funciona con series.

      En el siguiente ejemplo se realiza en Java la misma serie de animaciones de la sección anterior, usando el mismo layout. En la figura 2.7. se muestra el resultado.

      Nótese que la posición del centro de escalado, indicada en xml con pivotx=“50%”, se especifica en Java mediante estos dos parámetros:

      El primero es una constante que indica que la coordenada es relativa al objeto que se está animando. Dicha coordenada se especifica mediante el siguiente parámetro, que toma un valor entre 0 y 1.

      Figura 2.7. Serie de animaciones programadas con Java.

      La interfaz AnimationListener permite implementar acciones que se «disparan» cada vez que una animación se repite, o cuando finaliza o se inicia. Esto permite modificar el contenido del objeto View durante la animación o enlazar varias animaciones. Para ello, hay que definir la animación como un «oyente» mediante

      La clase que implementa AnimationListener debe definir los métodos onAnimationRepeat, onAnimationEnd, onAnimationStart.

      En el siguiente ejemplo, una primera animación hace aparecer un contador 10 veces. Nuestra actividad implementa AnimationListener incrementando el contador cada vez que la animación se repite y, al finalizar esta, ejecuta una segunda animación de escala escribiendo un mensaje final. Usamos el mismo layout de los ejemplos anteriores. En la figura 2.8. se muestra el resultado.

      Figura 2.8. Animación usando la interfaz AnimationListener.

      Una misma animación puede aplicarse a todo un layout. En este caso, se animarán todos los objetos View del layout en secuencia, cada uno con un retraso. Partiremos de la siguiente animación, una traslación que hace aparecer un elemento por la derecha.

      A continuación, definimos la animación del layout mediante layoutAnimation en el siguiente fichero xml. En este caso, especificamos el retraso o delay en la animación de cada elemento, expresado como una fracción de la duración de la animación, y el orden o animationOrder en el que se aplicarán las sucesivas animaciones, que puede ser normal, reverse o random. Finalmente, el fichero de la animación se especifica como el recurso anim/animacion.

      Figura 2.9. Animación de un layout mediante LayoutAnimation.

      Finalmente, aplicamos la animación al layout en el fichero main.xml mediante la etiqueta android:layoutAnimation. El fichero Java de nuestra aplicación layoutAnimationActivity no necesita modificarse con respecto al creado por defecto. En la figura 2.9. se muestra el resultado de la animación.

      La animación del layout anterior se ha realizado en su totalidad mediante recursos de animaciones almacenados en ficheros xml. La misma animación se puede hacer usando solo código Java. Para ello, hay que seguir los siguientes pasos:

      1 Definir la animación que debe aplicarse a cada View, como hicimos anteriormente.

      2 Construir un controlador de animaciones, que es un objeto de la clase LayoutAnimationController, pasándole la animación como parámetro.

      3 Ejecutar el método setLayoutAnimation del layout que queremos animar, pasándole el controlador anterior como parámetro.

      Todo ello se ilustra en la siguiente actividad, que da el mismo resultado que el ejemplo anterior (figura 2.9.).

      El layout que se ha utilizado en este ejemplo es el mismo que el del anterior, eliminando la etiqueta android:layoutAnimation y definiendo la ID del layout.

      Las animaciones de un layout también admiten la interfaz AnimationListener. Para ello, se invoca el método setLayoutAnimationListener. En el siguiente ejemplo se modifica la actividad anterior para cambiar el TextView final y que experimente una rotación después de la animación del layout. El fichero main.xml no se modifica. En la figura 2.11. se muestra el resultado.

      Figura 2.11. Animación de un layout

Скачать книгу