bootanimation Отображение загрузочной анимации Тип файла: команда usage: bootanimation Комментарии ФОРМАТ ЗАГРУЗОЧНОЙ АНИМАЦИИ Система выбирает zip-файл загрузочной анимации из следующих мест, в таком порядке: /system/media/bootanimation-encrypted.zip (если getprop("vold.decrypt") = '1') /system/media/bootanimation.zip /oem/media/bootanimation.zip Архивный файл bootanimation.zip включает в себя: desc.txt — текстовый файл part 0 part 1 каталоги, заполненные PNG-кадрами ... part N Первая строка определяет общие параметры анимации: 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 в ненулевую строку. ПОЛЕЗНЫЕ СОВЕТЫ ---------------- Используйте 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 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 соответственно. |