開機動畫(
閃動的android
字樣的動畫
)/android
2.2版本:
su***ceflinger
systemserver
啟動分為
init1()
和init2()兩個階段,在
init1
階段獲取屬性欄位system_init.startsu***ceflinger
,如果字段值為
1,那麼就在這裡啟動
su***ceflinger:
//@frameworks\base\cmds\system_server\library\system_init.cpp
char propbuf[property_value_max];
property_get("system_init.startsu***ceflinger", propbuf, "1");
if (strcmp(propbuf, "1") == 0)
su***ceflinger構造函式呼叫
readytorun
函式,至於為什麼會呼叫
readytorun
函式(並沒有顯式的呼叫語句),主要是因為
su***ceflinger
是乙個執行緒類,必須實現並會呼叫如下兩個函式:一是
readytorun()
,該函式定義了執行緒迴圈前需要初始化的內容;二是
threadloop()
,每個執行緒都必須實現,該函式定義了執行緒執行的內容,如果該函式返回
true
,執行緒會繼續呼叫
threadloop()
,如果返回
false
,執行緒將退出。
su***ceflinger:
readytorun函式用於初始化整個顯示系統。
實現過程如下:
(1)執行
new displayhardware(this,dpy)
,通過displayhardware
初始化framebuffer
、egl
並獲取opengl es
資訊。 (2
)建立共享的記憶體控制塊。 (3
)將egl
與當前螢幕繫結。 (4
)初始化共享記憶體控制塊。 (5
)初始化
opengl es。
(6)顯示開機動畫。
其中顯示開機動畫是啟動init..rc
中的bootanim
服務,語句如下:
//@framework\base\libs\su***ceflinger\su***ceflinger.cpp
property_
set("
ctl.start
", 「
bootanim」);
停止開機動畫業在
su***ceflinger
:bootfinished()中:
//@framework\base\libs\su***ceflinger\su***ceflinger.cpp
property_
set("
ctl.stop
", 「
bootanim」);
bootanim
相關檔案:
system/core/init/init.c
system/core/rootdir/init.rc
frameworks/base/cmds/bootanimation/bootanimation.h
frameworks/base/cmds/bootanimation/bootanimation.cpp
frameworks/base/cmds/bootanimation/bootanimation_main.cpp
frameworks/base/core/res/assets/images/android-logo-mask.png frameworks/base/core/res/assets/images/android-logo-shine.png
init.rc中定義服務:
「service bootanim /system/bin/bootanimation」。
bootanim服務由
readytorun()
(property_set("ctl.start", "bootanim");
)執行開機動畫
;bootfinished()(
property_set("ctl.stop", "bootanim");
)執行停止開機動畫。
(1)adb shell
後,可以直接執行
「bootanimation」
來重新看開機動畫,它會一直處於動畫狀態,而不會停止。(2)
adb shell
後,命令
「setprop ctl.start bootanim」
執行開機動畫;命令
「getprop ctl.st
op bootanim」停止開機動畫。這兩句命令分別對應
su***ceflinger.cpp
的兩句語句:
property_set("ctl.start", "bootanim");
和property_set("ctl.stop", "bootanim");
android 開機動畫
製作android 開機動畫,打包好之後一直黑屏,串列埠列印 e bootanimation descmap is null 十分鬱悶。後來才發現是因為打包的時候沒有直接選中檔案打包,導致打包之後的檔案裡面帶有了一層資料夾 稍微記錄一下製作過程吧 首先把弄好,在bootanimation資料夾下建立...
製作android開機動畫
開機時共分兩部分,開機logo和開機動畫 準備1 核心部分 第一階段靜態顯示,要求一張 png 格式 滿足機器要求解析度 單張不大於 100kb。靜態顯示時間 5 秒左右 2 android 部分 第二階段靜態顯示,要求一張 png 格式 滿足機器要求 解析度 單張不大於 100kb。靜態顯示時間 ...
修改Android開機動畫
1 準備幾張 的解析度最好和機器的解析度一樣。命名最好是有序的,如0000 0001 0002 2 建立資料夾與檔案 建立part0 part1 兩個檔案和desc.txt乙個檔案 1280 800 1 p 1 0 part0 p 0 0 part1 3 打包 把第二步的資料夾和檔案放到linux環...