Файлы System/bin Android 12. Справочник.


  Все     Команда     Скрипт     Служба     Приложение  

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 соответственно.