Referencia de API: Animación (Skottie)
La clase Animation (en io.github.humbleui.skija.skottie) proporciona soporte para cargar y renderizar animaciones Lottie.
Descripción General
Skottie es un reproductor Lottie de alto rendimiento para Skia. La clase Animation te permite cargar animaciones Lottie desde archivos, cadenas de texto o datos, y renderizar fotogramas específicos en un Canvas.
Creación
makeFromString(data): Crea unaAnimationa partir de una cadena JSON.makeFromFile(path): Crea unaAnimationa partir de una ruta de archivo.makeFromData(data): Crea unaAnimationa partir de un objetoData.
Renderizado
render(canvas): Dibuja el fotograma actual en el lienzo en(0, 0)con el tamaño natural de la animación.render(canvas, offset): Dibuja el fotograma actual en el desplazamiento(x, y)especificado.render(canvas, left, top): Dibuja el fotograma actual en las coordenadas especificadas.render(canvas, dst, renderFlags): Dibuja el fotograma actual escalado alRectde destino.
Control de la Reproducción
Para renderizar un fotograma específico, primero debes buscarlo.
seek(t): Busca un tiempo normalizadoten el rango[0..1].seek(t, ic): Busca un tiempo normalizadotcon unInvalidationController.seekFrame(t): Busca un índice de fotograma específicot(relativo aduration * fps).seekFrameTime(t): Busca un tiempo específicoten segundos.
Propiedades
getDuration(): Devuelve la duración total de la animación en segundos.getFPS(): Devuelve la tasa de fotogramas (fotogramas por segundo).getInPoint(): Devuelve el punto de entrada (fotograma inicial) en unidades de índice de fotograma.getOutPoint(): Devuelve el punto de salida (fotograma final) en unidades de índice de fotograma.getVersion(): Devuelve la cadena de versión de Lottie.getSize(): Devuelve el tamaño natural de la animación como unPoint.getWidth(): Devuelve el ancho de la animación.getHeight(): Devuelve la altura de la animación.
Ejemplo
java
// Cargar animación desde recursos o sistema de archivos
try (var anim = Animation.makeFromFile("loading.json")) {
// Obtener información de la animación
float duration = anim.getDuration(); // en segundos
float width = anim.getWidth();
float height = anim.getHeight();
// Preparar para el renderizado
anim.seek(0.5f); // Ir a la mitad de la animación (50%)
// Renderizar en el lienzo
// Asume que tienes una instancia de Canvas 'canvas'
canvas.save();
canvas.translate(100, 100); // Posicionar la animación
anim.render(canvas);
canvas.restore();
}