Skip to content

Расширения: Lottie и SVG

Skija включает высокоуровневую поддержку популярных векторных форматов, таких как Lottie (через Skottie) и SVG, что позволяет легко интегрировать сложные анимации и иконки в ваши Java-приложения.

Анимации Lottie (Skottie)

Skottie — это проигрыватель Lottie от Skia. Он может загружать и воспроизводить JSON-анимации, экспортированные из After Effects.

Загрузка анимации

java
import io.github.humbleui.skija.skottie.Animation;

Animation anim = Animation.makeFromFile("assets/loader.json");

Воспроизведение и рендеринг

Чтобы воспроизвести анимацию, нужно "перемотать" к определённому времени или кадру, а затем отрисовать её на холсте.

java
// Нормализованное время: 0.0 (начало) до 1.0 (конец)
anim.seek(currentTime); 

// Или перемотать к конкретному индексу кадра
anim.seekFrame(24);

// Отрисовать в определённый прямоугольник на холсте
anim.render(canvas, Rect.makeXYWH(0, 0, 200, 200));

Поддержка SVG

Skija предоставляет SVG DOM, который может парсить и отрисовывать SVG-файлы.

Загрузка и рендеринг SVG

java
import io.github.humbleui.skija.svg.SVGDOM;

Data data = Data.makeFromFileName("assets/icon.svg");
SVGDOM svg = new SVGDOM(data);

// Установить размер контейнера, в котором будет отрисован SVG
svg.setContainerSize(100, 100);

// Нарисовать его на холсте
svg.render(canvas);

Взаимодействие с SVG

Вы можете получить доступ к корневому элементу SVG, чтобы запросить его свойства, например, его внутренний размер.

java
SVGSVG root = svg.getRoot();
Point size = root.getIntrinsicSize();

Что и когда использовать?

  • Lottie: Лучше всего подходит для сложных UI-анимаций, анимаций персонажей и выразительных переходов.
  • SVG: Лучше всего подходит для статичных иконок, простых логотипов и иллюстраций.
  • Пользовательские шейдеры (SkSL): Лучше всего подходят для процедурно сгенерированных фонов, эффектов в реальном времени и высокодинамичной визуализации.