1. 程式人生 > >改動Android啟動畫面

改動Android啟動畫面

動畫 post local suffix med 根目錄 虛擬 framework thread

一.Android的啟動步驟

1.啟動Linux

技術分享

2.載入Android

技術分享

3.顯示Android桌面

技術分享

二.分析

Android載入開機動畫的源代碼文件是:
/opt/android4.3/frameworks/base/cmds/BootAnimation.cpp
關註當中的常量定義:

#include "BootAnimation.h"

#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip" #define EXIT_PROP_NAME "service.bootanim.exit"

在status_t BootAnimation::readyToRun()裏使用了它們:
技術分享
從threadLoop裏推斷,在不同情況下,載入不同動畫。當中:

  • android();是android字體閃動,它調用的是:
    “./frameworks/base/core/res/assets/images/android-logo-mask.png”和
    “./frameworks/base/core/res/assets/images/android-logo-shine.png”
    一張鏤空的圖,一張發光效果。

  • movie()是bootanimation.zip
    bootanimation.zip包括:

目錄part1
目錄part2
… 可能有非常多個目錄
desc.txt
目錄裏是png組成的動畫
desc.txt格式:

480 250 15
圖片的寬 圖片的高 每秒顯示的幀數
p 1 0 part0
標識符 循環的次數 階段切換間隔時間 相應圖片的目錄
p 0 10 part1
標識符 循環的次數 階段切換間隔時間 相應圖片的目錄

我直接下載了一個其它人做的動畫
http://download.csdn.net/downlaod/zhoucong50/3480737

放到目錄裏/opt/android4.3/out/target/product/generic/system/media/下

回到根目錄 ,運行

make snod

再啟動虛擬機:
emulator

效果:
技術分享
技術分享

改動Android啟動畫面