Ver animación

Puedes usar el sistema de animación de vista para realizar animaciones interpoladas en vistas. Animación de interpolación calcula la animación con información como el punto de inicio y de finalización, el tamaño, la rotación y otros aspectos comunes de una animación.

Una animación de interpolación puede realizar una serie de transformaciones simples (posición, tamaño, rotación, y transparencia) en el contenido de un objeto View. Por lo tanto, si tienes un objeto TextView, puedes mover, girar, aumentar o encoger el texto. Si tiene un valor imagen de fondo, esta imagen se transformará junto con el texto. El animation package proporciona todas las clases que se usan en una animación de interpolación.

Una secuencia de instrucciones de animación define la animación de interpolación, definida por XML o Código de Android. Al igual que cuando se define un diseño, se recomienda un archivo en formato XML porque es más legible. reutilizable e intercambiable que la codificación hard-coded. En el siguiente ejemplo, utilizamos XML. (Para para obtener más información sobre cómo definir una animación en el código de tu aplicación, en lugar de XML, consulta el clase AnimationSet y otras subclases Animation).

Las instrucciones de animación definen las transformaciones que quieres que ocurran, cuándo se realizarán. y cuánto tiempo deberían tardar en postularse. Las transformaciones pueden ser secuenciales o simultáneas - Por ejemplo, puedes hacer que el contenido de una TextView se mueva de izquierda a derecha y, luego, rote 180 grados, o puedes hacer que el texto se mueva y gire al mismo tiempo. Cada transformación toma un conjunto de parámetros específicos para esa transformación (tamaño inicial y tamaño final para size) cambio, el ángulo inicial y el final para la rotación, etc.), y también un conjunto de valores parámetros (por ejemplo, hora de inicio y duración). Para realizar varias transformaciones simultáneamente, proporcionarles la misma hora de inicio; para que sean secuenciales, calcula la hora de inicio más la duración de la transformación anterior.

El archivo en formato XML de la animación debe encontrarse en el directorio res/anim/ de tu dispositivo Android. en un proyecto final. El archivo debe tener un único elemento raíz: puede ser un único elemento <alpha>, <scale> y <translate> <rotate>, elemento interpolador o elemento <set> que contiene grupos de estos elementos (que pueden incluir otro <set>). De forma predeterminada, las instrucciones de animación se aplican simultáneamente. Para que ocurran secuencialmente, debes especifica el atributo startOffset, como se muestra en el siguiente ejemplo.

El siguiente XML de una de las ApiDemos se usa para estirar, luego girar y rotar un objeto View.

<set android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set android:interpolator="@android:anim/decelerate_interpolator">
        <scale
           android:fromXScale="1.4"
           android:toXScale="0.0"
           android:fromYScale="0.6"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400"
           android:fillBefore="false" />
        <rotate
           android:fromDegrees="0"
           android:toDegrees="-45"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400" />
    </set>
</set>

Las coordenadas de la pantalla (que no se usan en este ejemplo) son (0,0) en la esquina superior izquierda. aumentar a medida que se baja a la derecha.

Algunos valores, como pivotX, pueden especificarse en relación con el objeto en sí o con la superior. Asegúrate de usar el formato adecuado para lo que deseas ("50" para 50% en relación con el elemento superior, o "50%" 50% en relación con sí misma).

Puedes determinar cómo se aplica una transformación a lo largo del tiempo si asignas un Interpolator. Android incluye varias subclases Interpolator especificar varias curvas de velocidad: por ejemplo, AccelerateInterpolator le indica a una transformación que empiece despacio y se acelere. Cada una tiene un valor de atributo que se puede se aplica en el XML.

Con este XML guardado como hyperspace_jump.xml en res/anim/ del proyecto, el siguiente código lo hará referencia y lo aplicará a un objeto ImageView desde el diseño.

Kotlin

AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump).also { hyperspaceJumpAnimation ->
    findViewById<ImageView>(R.id.spaceshipImage).startAnimation(hyperspaceJumpAnimation)
}

Java

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);

Como alternativa a startAnimation(), puedes definir una hora de inicio para el animación con Animation.setStartTime() y, luego, asigna la animación a la vista con View.setAnimation().

Para obtener más información sobre la sintaxis XML y las etiquetas y los atributos disponibles, consulta Recursos de animación.

Nota: Independientemente de cómo se mueva o cambie el tamaño de la animación, la los límites de la vista que contiene tu animación no se ajustarán automáticamente para adaptarse a ella. Aun así, se dibujará la animación más allá de los límites de su vista y no se recortará. Sin embargo, se producirá un recorte si la animación excede los límites de la vista principal.