Справочник API: Анимация (Skottie)
Класс Animation (в io.github.humbleui.skija.skottie) обеспечивает поддержку загрузки и отрисовки анимаций Lottie.
Обзор
Skottie — это высокопроизводительный проигрыватель Lottie для Skia. Класс Animation позволяет загружать анимации Lottie из файлов, строк или данных и отрисовывать определённые кадры на Canvas.
Создание
makeFromString(data): СоздаётAnimationиз строки JSON.makeFromFile(path): СоздаётAnimationиз пути к файлу.makeFromData(data): СоздаётAnimationиз объектаData.
Отрисовка
render(canvas): Рисует текущий кадр на холсте в точке(0, 0)с естественным размером анимации.render(canvas, offset): Рисует текущий кадр с указанным смещением(x, y).render(canvas, left, top): Рисует текущий кадр по указанным координатам.render(canvas, dst, renderFlags): Рисует текущий кадр, масштабированный до целевогоRect.
Управление воспроизведением
Чтобы отрисовать определённый кадр, необходимо сначала перейти к нему.
seek(t): Переходит к нормализованному времениtв диапазоне[0..1].seek(t, ic): Переходит к нормализованному времениtс использованиемInvalidationController.seekFrame(t): Переходит к конкретному индексу кадраt(относительноduration * fps).seekFrameTime(t): Переходит к конкретному времениtв секундах.
Свойства
getDuration(): Возвращает общую длительность анимации в секундах.getFPS(): Возвращает частоту кадров (кадров в секунду).getInPoint(): Возвращает точку входа (начальный кадр) в единицах индекса кадра.getOutPoint(): Возвращает точку выхода (конечный кадр) в единицах индекса кадра.getVersion(): Возвращает строку версии Lottie.getSize(): Возвращает естественный размер анимации в видеPoint.getWidth(): Возвращает ширину анимации.getHeight(): Возвращает высоту анимации.
Пример
java
// Загружаем анимацию из ресурсов или файловой системы
try (var anim = Animation.makeFromFile("loading.json")) {
// Получаем информацию об анимации
float duration = anim.getDuration(); // в секундах
float width = anim.getWidth();
float height = anim.getHeight();
// Подготавливаем к отрисовке
anim.seek(0.5f); // Переходим к середине анимации (50%)
// Отрисовываем на холст
// Предполагается, что у вас есть экземпляр Canvas 'canvas'
canvas.save();
canvas.translate(100, 100); // Позиционируем анимацию
anim.render(canvas);
canvas.restore();
}