Android Boot Animations 101
Although there may be one out there, I have not found a comprehensive boot animation thread in any of the several forums that I frequent. I have found many threads with information on boot animations, and wish I could find them all now to give credit for all the information in this tutorial. Most of the info is from others, I am just putting it all in one place, although there are also some tips and tricks that I have found through trial and error. If anyone has done work with boot animations, and have some helpful hints or tips, feel free to post them, and I will add to the OP. Same goes if you find I made a mistake, let me know and I'll fix it.
Also, I should note that while the animation itself, AFAIK, is the same on all Android devices, the filename and location can vary on some devices. Because I use a Droid X, this tutorial is written from that perspective, but I hope to eventually include a table of filenames and locations for other devices as well. I don't believe there is a lot of variation, though.
And, finally, I have to say this;
Neither I nor droidforums.net are in any way responsible for what you do to your device.
The boot animation on an Android phone is contained in a .zip file. It has two parts, the individual frames, contained in one or more folders, and a desc.txt file. The boot process checks two locations for the animation. First, it checks /data/local, then /system/media. What this means is that the animation can be saved in either location (some custom ROMs may change this, but if one location doesn't work, the other usually does). Personally, I always put them in /data/local, because the stock animation is located in /system/media; there is no need to rename or delete the stock animation, and switching back to stock is a simple matter of deleting the custom one in /data/local.
The desc.txt file
The desc.txt file is a simple file that instructs the system how to play the animation. I will use the stock animation from the Droid X as an example (with the s line added).
480 480 10
p 1 0 part0
p 0 0 part1
The first line is the frame size and the frame rate, in the example, the frames are 480 px wide by 480 px tall and plays at 10 frames per second. The frame size must match the image size of the frames, but can be any size up to the resolution of the device. For example, on the Droid X, the maximum frame size is 480 x 854.
s = Play sound
androidaudio.mp3 = sound file name (more on this below)
p = Play folder
First # = How many time to repeat the folder (0 = infinite loop, until boot process completes)
Second # = How long to pause before going to the next folder in frames; i.e. at a frame rate of 10 fps, putting 10 as the second # would equal a pause of 1 second.
part0 = Simply the name of the folder containing the frames for that part of the animation. Any name will work here as long as the folder has the same name. For simplicity, I just use part0, part1, etc as folder names.
As you can see, the stock animation first plays all the images in the folder named part0, one time, and then immediately moves to the next folder, part1, and plays the images in that folder in a continuous loop until the boot process completes.
The individual frames are usually saved as either .jpg or .png files; other filetypes may work but I have not tried them. I usually use .jpg because of their smaller size, they tend to run smoother. The frames can be named in any way you like, but will always be played in alphabetical/numerical order. For simplicity, I just name them with numbers, 000, 001, 002, etc.
To determine the number of frames to be used is a simple math problem. I typically shoot for a maximum of 8-10 seconds for the non-looping part of the animation, to ensure that it plays completely on all devices, as boot times can vary quite a bit even on the same device. 8 seconds times x frames per second = 8x frames. So at 10 frames per second, the maximum number of frames is 80. I have made animations that run at higher than 10 fps, but over 20-25, it tends to lag a little, at least on my phone. You can experiment with this. Also, fullscreen animations are more prone to lag for obvious reasons.
You should have guessed how these work by now. You have lots of flexibility by using the folders. You can have as many folders as you like, as long as they are all called by the desc.txt file. You can have a folder play 3 times, then the next play once, and the last loop; you can simply have one looping folder; use your imagination.
After you have all the frames saved correctly in their folders, and the desc.txt file created, select all of them and zip them up. This is the key - many people have had issues because of this simple step - THE CONTENTS CANNOT BE COMPRESSED. Set the compression level to "store" or "none" or whatever the program you use calls it.
The .zip MUST BE named "bootanimation.zip" or it will not work (As stated earlier, this may be different on different devices).
Creating your custom animation
I am not an artist, and have not done any truly original animations, but if you are, you probably know most of what I'm going to say here. There are a few different ways to make your own animations. The first, and slowest method, is to use your preferred photo editing/drawing software (Gimp is a good free one) to create each individual frame, usually by creating the first one, then making slight changes for each subsequent frame. Again, remember to name each frame in alphabetical/numerical order.
Option #2 is to use animation software to create the frames. Because I do not have any such software on my computer, I'm going to take the easy way out on this one and assume that if you do, you know how to use it .
Option #3 is to create an animation from an existing video or animation on your computer/the internet.
Disclaimer: Please respect copyright laws if you choose this route.
There are a few free programs that will convert a video to individual frames in .jpg format. At the end of this tutorial is a link to one I have used. It is fairly quick and easy to use. The only issue with it is that it tends to repeat frames here and there, which can be noticeable at slower fps rates.
After converting to .jpg's, they must be cropped/resized to what you want. I use Photoshop's batch automation feature for this, but there may be other programs that do it. Again, I'm going to assume that if you have it, you know how to use it, as this is not a Photoshop tutorial. Now you can add other effects, such as fading, colorizing, etc, just use your imagination. Some things, like colorizing can be done using batch automation, others, like fading, I do the old-fashioned way, by adjusting and saving each frame. Finally, I use batch animation again to rename all the images to the simple 000, 001, 002, etc. format.
First of all, I haven't done a lot of research on this yet. Thanks to mattmartin77, I have a little info for you. Attached at the end is a zip file containing a file to be pushed to /system/bin to enable sound in the animation (I believe this is just for FroYo). Copy your audio file to /system/media and /data/local (not sure why it needs to be both, I'm guessing because some roms check one, and some check the other...)
Also, thanks to Casen for the following: If you have gingerbread, it looks for sound in /system/media/audio/notifications/, so you can copy your audio file there instead, making sure it is called in the desc.txt. And, there is no need to push the file to /system/bin as the audio functionality is built-in on gingerbread.
One more thing, you can put the "s audio.mp3" line before the folder you want it to start playing on. In other words, if you want the first part of the animation to be silent for some reason, put the "s" call after the first "p" call.
Installing the boot animation
There are two ways to install a new boot animation. The first way is manually: as described above, copy the animation to the correct directory, and ensure it is named properly. I usually give the animation a meaningful name before copying to the phone, such as "drcbootanimation.zip", to help keep them straight. After copying to the proper folder, I simply rename and remove the "drc" from the beginning.
Option #2 actually takes a little longer, but is easier for most people. It is using a flashable .zip file in clockwork recovery. There are a couple versions of the flashable .zip out there, and I honestly don't even know who originally made them, but it was not me . The one I use copies the animation to /data/local. I use it for the same reason I stated above, because it does not overwrite the stock animation. I will also include a link for it at the end of this tutorial.
To add your new animation to the flashable .zip, open the zip using 7zip or your preferred zip utility. In 7zip, open the data folder, then the local folder and you will see the bootanimation.zip. The installer comes with an animation I made for the Liberty ROM, just for practice. It is only in there as kind of a placeholder so you know for sure where to put yours. Simply drag your new bootanimation.zip (make sure it is named exactly that if using this option, you can save the meaningful name for the install .zip itself) to 7zip while viewing the /local folder to replace the existing animation. Your done! Transfer the install .zip to your phone, and install from zip in clockwork and enjoy .
Video to JPG converter:
Free Video to JPG Converter - Free software downloads and software reviews - CNET Download.com
I hope to add a few things to this tutorial in the future, but I just wanted to get a good, basic animation tutorial done for now. Here are my plans:
- Add table with filenames and install locations for other devices.
- Add tutorial for adding sound (I haven't played with this much, as I don't really care for sound in my bootup process, so I need to do a little more research first). Edit: Started. Thanks matt
- Add a troubleshooting process for any problems you run into.
- Add screenshots for parts of the tutorial.