# Boot Animation The boot animation format is described in full by [FORMAT.md](https://android.googlesource.com/platform/frameworks/base/+/master/cmds/bootanimation/FORMAT.md) ## Command to create the zip: zip -0qry -i \*.txt \*.png \*.wav @ ../bootanimation.zip *.txt part* ## zipfile layout The `bootanimation.zip` archive file includes: desc.txt - a text file part0 \ part1 \ directories full of PNG frames ... / partN / ## desc.txt format The first line defines the general parameters of the animation: WIDTH HEIGHT FPS [PROGRESS] * **WIDTH:** animation width (pixels) * **HEIGHT:** animation height (pixels) * **FPS:** frames per second, e.g. 60 * **PROGRESS:** whether to show a progress percentage on the last part + The percentage will be displayed with an x-coordinate of 'c', and a y-coordinate set to 1/3 of the animation height. It is followed by a number of rows of the form: TYPE COUNT PAUSE PATH [FADE [#RGBHEX [CLOCK1 [CLOCK2]]]] * **TYPE:** a single char indicating what type of animation segment this is: + `p` -- this part will play unless interrupted by the end of the boot + `c` -- this part will play to completion, no matter what + `f` -- same as `p` but in addition the specified number of frames is being faded out while continue playing. Only the first interrupted `f` part is faded out, other subsequent `f` parts are skipped * **COUNT:** how many times to play the animation, or 0 to loop forever until boot is complete * **PAUSE:** number of FRAMES to delay after this part ends * **PATH:** directory in which to find the frames for this part (e.g. `part0`) * **FADE:** _(ONLY FOR `f` TYPE)_ number of frames to fade out when interrupted where `0` means _immediately_ which makes `f ... 0` behave like `p` and doesn't count it as a fading part * **RGBHEX:** _(OPTIONAL)_ a background color, specified as `#RRGGBB` * **CLOCK1, CLOCK2:** _(OPTIONAL)_ the coordinates at which to draw the current time (for watches): + If only `CLOCK1` is provided it is the y-coordinate of the clock and the x-coordinate defaults to `c` + If both `CLOCK1` and `CLOCK2` are provided then `CLOCK1` is the x-coordinate and `CLOCK2` is the y-coodinate + Values can be either a positive integer, a negative integer, or `c` - `c` -- will centre the text - `n` -- will position the text n pixels from the start; left edge for x-axis, bottom edge for y-axis - `-n` -- will position the text n pixels from the end; right edge for x-axis, top edge for y-axis - Examples: * `-24` or `c -24` will position the text 24 pixels from the top of the screen, centred horizontally * `16 c` will position the text 16 pixels from the left of the screen, centred vertically * `-32 32` will position the text such that the bottom right corner is 32 pixels above and 32 pixels left of the edges of the screen There is also a special TYPE, `$SYSTEM`, that loads `/system/media/bootanimation.zip` and plays that.