android 開機動畫animation定製

2021-08-09 05:13:28 字數 1745 閱讀 6496

每個手機開機的時候都會有乙個開機動畫和鈴聲

不同的開機動畫都有不同的效果,不管是oem還是運營商都會對這個logo有嚴格的要求,當然,自己如果想diy製作自己的動畫也可以參考下面的方法

通常,animation的檔案存放在\\system\media\bootanimation.zip中,檔案路徑並不絕對,比如qcom和mtk就不同,可以在**中搜尋關鍵字來查下路徑

如果沒有定製這塊的內容,那麼會沿用平台源生的**,利用二進位制靜態製作乙個開機介面,具體在lcd driver中可以找到.

bootanimation.zip解壓後會有多個資料夾和乙個.txt文件,如下

通常animation都是p引數開頭的,偶爾也會有c開頭的引數,如下:

×××bootanimation.zip/folder2。

「c 0 0 folder3」-------代表該片段無限迴圈顯示,且兩次顯示的間隔為0s,與下乙個片段間隔0s,該片段的顯示圖路徑為bootanimation.zip/folder3。

「c 1 10 folder4」--------代表該片段顯示1次,顯示後暫停10*(1/20)=0.5s,該片段的顯示圖路徑為bootanimation.zip/folder4。

"p"片段和「c」片段的區別

在早期android版本中只有「p」片段,且movie()中的顯示**如下:

for (int i=0 ; i裡面的主要引數和函式說嗎如下:

pcount---顯示片段的數量,比如上面的例子,pcount=4

p.count---該片段的重複顯示次數。

fcount---該片段中png的數量

exitpending()---如果su***ceflinger服務通知bootanimation停止顯示動畫,則該函式返回值為true,否則為false。

第乙個for迴圈用於順序顯示所有片段,第二個for迴圈用於重複顯示該片段,第三個for迴圈用於順序顯示該片段中所有的png。

分析**,可知:若exitpending()返回值為true,即su***ceflinger服務要求bootanimation停止顯示動畫,則不管當前顯示到哪個片段或png,都會導致退出for迴圈,從而停止開機動畫的顯示。

在android5.1中,加入了「c」片段。對與以"c"標識的片段,即使exitpending()返回值為true,也會繼續顯示。

我們分析一下原始碼,首先看一下movie()中解析desc.txt的**:

// parse the description file

for (;;)

else if (sscanf(l, " %c %d %d %s #%6s", &pathtype, &count, &pause, path, color) >= 4)

animation.parts.add(part);

}s = ++endl;

}可以看到,如果pathtype==『c』,part.playuntilcomplete等於true,否則為false。接著,看一下顯示**:

for (size_t i=0 ; i然後就是壓縮包了,把需要用到的part資料夾跟decs.txt打包成zip格式,必須是zip,不能是rar,而且打包的時候壓縮方式要選擇「儲存」模式。然後改名成為bootanimation.zip,然後替換原檔案即可生效

Android開機動畫

開機動畫 閃動的android 字樣的動畫 android 2.2版本 su ceflinger systemserver 啟動分為 init1 和init2 兩個階段,在 init1 階段獲取屬性欄位system init.startsu ceflinger 如果字段值為 1,那麼就在這裡啟動 s...

android 開機動畫

製作android 開機動畫,打包好之後一直黑屏,串列埠列印 e bootanimation descmap is null 十分鬱悶。後來才發現是因為打包的時候沒有直接選中檔案打包,導致打包之後的檔案裡面帶有了一層資料夾 稍微記錄一下製作過程吧 首先把弄好,在bootanimation資料夾下建立...

製作android開機動畫

開機時共分兩部分,開機logo和開機動畫 準備1 核心部分 第一階段靜態顯示,要求一張 png 格式 滿足機器要求解析度 單張不大於 100kb。靜態顯示時間 5 秒左右 2 android 部分 第二階段靜態顯示,要求一張 png 格式 滿足機器要求 解析度 單張不大於 100kb。靜態顯示時間 ...