Skip to content

Справочник API: Анимация (Skottie)

Класс Animationio.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();
}