| bootanimation
Отображение загрузочной анимации Тип файла: команда Комментарии
https://android.googlesource.com/platform/frameworks/base/+/master/cmds/bootanimation/FORMAT.md
ФОРМАТ ЗАГРУЗОЧНОЙ АНИМАЦИИ
Путь к zip-файлу
Система выбирает zip-файл загрузочной анимации из следующих мест, в таком порядке:
/system/media/bootanimation-encrypted.zip (если getprop("vold.decrypt") = '1')
/system/media/bootanimation.zip
/oem/media/bootanimation.zip
Содержимое ZIP-файла
Архивный файл bootanimation.zip включает в себя:
desc.txt — текстовый файл
part 0
part 1 каталоги, заполненные PNG-кадрами
...
part N
Формат файла desc.txt
Первая строка определяет общие параметры анимации:
WIDTH HEIGHT FPS [PROGRESS]
- WIDTH: ширина анимации (в пикселях).
- HEIGHT: высота анимации (в пикселях).
- FPS: кадров в секунду, например. 60
- PROGRESS: показывать ли процент прогресса в последней части
Процент будет отображаться с координатой x, равной 'c', и координатой y, равной 1/3 высоты анимации.
Затем укажите необязательную строку для атрибутов динамической окраски,
если будет использоваться динамическая окраска.
Подробнее о формате см. в разделе динамической окраски.
За ним следует ряд строк вида:
TYPE COUNT PAUSE PATH [FADE [#RGBHEX [CLOCK1 [CLOCK2]]]]
TYPE: один символ, указывающий, какой это тип сегмента анимации:
p - эта часть будет воспроизводиться, если ее не прервет конец загрузки
c - эта часть будет сыграна до конца, несмотря ни на что
f - то же самое p, но в дополнение указанное количество кадров затемняется
при продолжении воспроизведения.
Затемняется только первая прерванная f часть,
остальные последующие f части пропускаются
COUNT: сколько раз воспроизводить анимацию или 0, чтобы зацикливаться
до завершения загрузки
PAUS: количество КАДРОВ для задержки после окончания этой части
PATH: каталог, в котором можно найти кадры для этой части (например part0, )
FADE: (только для f типа)- количество кадров, которые исчезают при прерывании,
где 0 означает немедленно, что заставляет F ... 0 вести себя как P
и не считать его частью затухания
RGBHEX: (необязательный) цвет фона, указанный как #RRGGBB
CLOCK1, CLOCK2: (необязательные) координаты, по которым отрисовывается
текущее время (для часов):
Если только CLOCK1 указано, это координата Y часов, а координата X по умолчанию равна 'c' (центр)
Если указаны CLOCK1, CLOCK2, то CLOCK1 - это координата X и CLOCK2 - координата Y
Значения могут быть положительным целым числом, отрицательным целым числом или 'c'
c - центрирует текст
n - расположит текст на n пикселей от начала; левый край для оси x, нижний край для оси y
-n - расположит текст на n пикселей от конца; правый край для оси x, верхний край для оси y
Примеры:
-24 или c -24 : расположит текст на расстоянии 24 пикселя от верхней части экрана
по центру по горизонтали
16 c : расположит текст в 16 пикселях слева от экрана по центру по вертикали
-32 32 : расположит текст так, чтобы нижний правый угол был на 32 пикселя выше
и на 32 пикселя слева от краев экрана
Существует также специальный TYPE = $SYSTEM,
который загружает /system/media/bootanimation.zip и воспроизводит его.
Файл clock_font.png, используемый для отображения времени поверх анимации загрузки.
Формат шрифта следующий:
В файле указаны глифы для символов ascii 32-127 (0x20-0x7F), как обычного,
так и жирного шрифта.
Изображение разделено на сетку символов
Есть 16 столбцов и 6 строк
Каждая строка разделена пополам: глифы обычного веса в верхней половине, жирные глифы в нижней части.
Для изображения NxM каждый символьный глиф будет иметь ширину N/16 пикселей и высоту M/(12*2) пикселей.
Файл progress_font.png, используемый для отображения прогресса загрузки в процентах
поверх анимации загрузки. Формат шрифта соответствует той же спецификации, что и для clock_font.png.
ЗАГРУЗКА И ВОСПРОИЗВЕДЕНИЕ КАДРОВ
Каждая часть (part N) сканируется и загружается прямо из zip-архива.
Внутри каталога части каждый файл (кроме trim.txtи audio.wav; см. следующие разделы)
должен быть файлом PNG, представляющим один кадр в этой части (с указанным разрешением).
По этой причине важно, чтобы кадры назывались последовательно
(например part000.png, part001.png, , ...) и добавлялись в zip-архив именно в таком порядке.
Файл trim.txt
Для экономии памяти текстуры могут быть обрезаны по цвету фона.
В файле trim.txt последовательно перечислены выходные данные обрезки
для каждого кадра в своем каталоге, поэтому кадры могут быть правильно расположены.
Вывод должен иметь вид: WxH+X+Y.
Пример:
713x165+388+914
708x152+388+912
707x139+388+911
649x92+388+910
Если файл отсутствует, предполагается, что каждый кадр имеет тот же размер, что и анимация.
Файл audio.wav
Каждая часть может дополнительно воспроизводить образец звука wav при запуске.
Чтобы включить это, добавьте файл с именем audio.wav в каталог PART.
ВЫХОД
Загрузочная анимация закончится, сначала завершив любые незавершенные
или даже полностью не воспроизведенные части типа c, в тот момент,
когда система завершит загрузку.
Это достигается установкой системного свойства service.bootanim.exit в ненулевую строку.
ПОЛЕЗНЫЕ СОВЕТЫ
----------------
СЖАТИЕ PNG
Используйте zopflipng, если он у вас есть, иначе произойдет pngcrush, например:
for fn in *.png ; do
zopflipng -m ${fn}s ${fn}s.new && mv -f ${fn}s.new ${fn}
# or: pngcrush -q ....
done
Такие анимации выигрывают от сокращения до 256 цветов:
pngquant --force --ext .png *.png
# alternatively: mogrify -colors 256 anim-tmp/*/*.png
СОЗДАНИЕ ZIP-АРХИВА
cd <path-to-pieces>
zip -0qry -i \*.txt \*.png \*.wav @ ../bootanimation.zip *.txt part*
Обратите внимание, что ZIP-архив на самом деле не сжат !
Файлы PNG уже настолько сжаты, насколько это возможно,
и вряд ли между файлами будет какая-либо избыточность.
ДИНАМИЧЕСКАЯ ОКРАСКА
Динамическое окрашивание — это режим рендеринга, в котором загрузочная анимация
рисуется с использованием цветового перехода.
В этом режиме вместо прямого рендеринга изображений PNG он обрабатывает
каналы R, G, B, A входных изображений как маски областей динамических цветов,
которые интерполируют между начальным и конечным цветами на основе прогрессии анимации.
Чтобы включить его, добавьте следующую строку во вторую строку файла desc.txt:
dynamic_colors PATH #RGBHEX1 #RGBHEX2 #RGBHEX3 #RGBHEX4
PATH: путь к файлу детали, к которой применяется динамический переход цвета.
Любая часть перед этой частью будет отображаться в начальных цветах.
Любая часть после будет отображаться в конечных цветах.
RGBHEX1: первый начальный цвет (замаскированный каналом R), указанный как #RRGGBB
RGBHEX2: второй начальный цвет (замаскированный каналом G), указанный как #RRGGBB
RGBHEX3: третий начальный цвет (замаскированный каналом B), указанный как #RRGGBB
RGBHEX4: четвертый начальный цвет (замаскированный каналом A), указанный как #RRGGBB
Конечные цвета будут считываться из следующих системных свойств:
persist.bootanim.color1
persist.bootanim.color2
persist.bootanim.color3
persist.bootanim.color4
При их отсутствии конечные цвета по умолчанию будут начальными, что фактически
не приведет к переходу цвета.
Подготовьте изображения PNG так, чтобы каналы R, G, B, A указывали
области для рисования color1, color2, color3 и color4 соответственно.
|
|