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
y, luego, asigna la animación a la vista con Animation.setStartTime()
.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.