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
Жанр Математика
Серия El gran libro de
Издательство Математика
Год выпуска 0
isbn 9788426720238



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

este caso, ambas valen 50%, correspondiendo al centro del objeto que se está rotando. El programa Rotacion.java es prácticamente el mismo que el del ejemplo anterior, cambiando el nombre del fichero de animación y el texto. En la figura 2.3. se muestra el resultado.

      Figura 2.3. Animación rotando un texto.

      Una dilatación o contracción es una animación de la escala en las dimensiones de un objeto de tipo View. Esto se hace en xml utilizando la propiedad scale. Para este ejemplo, usaremos el siguiente fichero de animación:

      Se debe indicar la escala inicial y final en cada dimensión X e Y. El centro de dilatación se especifica igual que el centro de rotación, con pivotX y pivotY.

      El programa Java para dilatar un texto sería una variante de los ejemplos anteriores, usando el mismo layout. En la figura 2.4. se muestra el resultado.

      Figura 2.4. Animación dilatando un texto.

      Para conseguir que un texto aparezca haciéndose más visible o nítido, animaremos la propiedad alpha, que controla la transparencia o, más correctamente, la ausencia de transparencia. Es decir, la opacidad. Un valor igual a cero indica transparencia total, o invisibilidad. Un valor igual a uno es opacidad total. En la siguiente actividad hacemos aparecer y desaparecer un texto animando la transparencia. En primer lugar, creamos un fichero xml para la animación.

      Usamos el mismo layout de los ejemplos anteriores y modificamos ligeramente el programa para obtener la actividad que se detalla a continuación. En la figura 2.5. se muestra el resultado de la animación.

      Figura 2.5. Animación haciendo aparecer un texto.

      Es posible encadenar varias animaciones en un AnimationSet. Para ello, utilizamos la etiqueta set en un fichero xml. En el siguiente ejemplo encadenamos una aparición, una dilatación, una rotación y una traslación. Por defecto, todas las animaciones comienzan simultáneamente, pero se puede indicar el momento en que debe comenzar cada una mediante la etiqueta startOffset. En este caso, cada animación comienza tres segundos después de la que la precede.

      De nuevo, el fichero de la actividad es similar a los anteriores, igual que el layout. En la figura 2.6. se muestra el resultado.

      Figura 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