Androidの起動アニメーションを変更する

- arata-furukawa

Androidのrootユーザー権限を取得していることを前提としています。

Androidの起動アニメーション構造

Androidのboot時に再生されるアニメーションは/system/media/bootanimation.zipが使用されます。

このファイルは無圧縮のzipである必要がある。内部の書庫構造は以下のようにします。また、bootanimation.zipのパーミッションは644以上である必要があります。

bootanimation.zip
├ desc.txt
├ part0
┊ ├ 0000.png
┊ ├ 0001.png
┊ ┊
┊ └ 9999.png
┊
└ part9
  ├ 0000.png
  ┊

part1からpart9は任意です。また、それぞれの連番画像は0000から9999までの任意の枚数。形式はpngのみで、色数が多すぎると動かない場合があります。

desc.txtの中には以下の様な構文で画像の再生方法を指定します。

620 164 30
c 0 0 part0

一行目にはwidth height FPSを指定する(FPS=Frame Per Second)。サイズがpngファイルと異なると何も表示されないので注意です。二行目以降にはtype loop-count delay path bgcolor-hex-rgb(optional)の書式でアニメーションを定義する。行末に必ず改行が必要なことに注意してください(特に最後の行)

  • type アニメーションはcを指定する。pと書かれているものがあるが、これは古い形式となるため、新しいバージョンであればcを使用する。
  • loop-count アニメーションのループ回数。0を指定すると無限ループする。アニメーションはbootが終了すると自動で打ち切られる。
  • delay アニメーション定義が複数ある場合に、アニメーション終了後に次のアニメーションが開始するまでの間隔。
  • path bootanimation.zipの中のpart*を指定する。
  • bgcolor-hex-rgb 16進数のRGBで背景色を指定する。(e.g. 00FFEE)

実際にアニメーションを作成する

MacでgifアニメーションをAndroidの起動アニメーションに変換、インストールします。

ここでは画像処理にImageMagickを使います。画像サイズは620x164とし、元のgif画像./boot.gifを用意して、gifのリサイズ、減色、変換を行います。リサイズしてから減色しないとノイズが大きくなるので注意です。

$ mkdir -p tmp/part0 bootanimation/part0
$ cat >> bootanimation/desc.txt <<'EOF'
> 620 164 10
> c 0 0 part0
>
> EOF
$ convert boot.gif -gravity center -thumbnail 620x164 -extent 620x164 tmp/boot-620x164.gif
$ convert -coalesce tmp/boot-620x164.gif tmp/part0/%04d.png
$ convert -colors 96 tmp/part0/*.png bootanimation/part0/%04d.png
$ zip -0r bootanimation bootanimation/
$ chmod 644 bootanimation.zip
$ adb remount
$ adb push bootanimation.zip /system/media
$ adb reboot

起動するとごちうさのOPが流れてこころがぴょんぴょんするAndroidを作ると楽しいです。