Расширения: 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): Лучше всего подходят для процедурно сгенерированных фонов, эффектов в реальном времени и высокодинамичной визуализации.