極力推薦文章:歡迎收藏
Android 干貨分享
本篇文章主要介紹 Android
開發中的部分知識點,通過閱讀本篇文章,您將收獲以下內容:
一、開機動畫壓縮格式必須為存儲方式
二、開機動畫壓縮包不能包含bootanimation文件夾
三、開機動畫圖片 size 以及格式需要完全統一
四、開機動畫幀率,播放速度配置方案
一、開機動畫壓縮格式必須為存儲方式
開機動畫壓縮包必須以 存儲方式 進行壓縮,否則無法播放開機動畫。
二、開機動畫壓縮包不能包含bootanimation文件夾
開機動畫壓縮包不能包含bootanimation
文件夾,必現是如下格式。
三、開機動畫圖片 size 以及格式需要完全統一
開機動畫圖片需要統一格式
跟size
,不然因為大小不統一,播放出來很丑。
四、開機動畫幀率,播放速度配置方案
desc.txt
文件用來定義開機動畫的播放配置。
以 1280* 720
的圖片舉例如下:
//參數: 寬:720 ;高:1280 ;幀率 :10
720 1280 10
// 參數:Google 默認: p;循環次數:1;圖像渲染后delay時間:0 文件路徑:folder1
p 1 0 folder1
p 0 0 folder2
1.第一行的參數前兩位720
和1280
分別表示要顯示動畫的 width
和height
.
2.第一行的第三個參數10
是定義動畫播放的預訂幀率(FPS)
.
這個幀率FPS
是指:每秒動畫播放的幀數。
此幀數是一個理想值,並不一定代表動畫實際幀率,假設預訂幀率為FPS_I
,預訂每一幀解析的時間t_I,
則t_I=1/FPS_I
。
實際幀率的規則是:
假設某一幀從解析到渲染耗時為t_r
,當t_r<=t_l
,則渲染完這一幀后,動畫這個thread
會sleep(t_l-t_r)
的時間,也就說這一幀最后的耗時就t_l
;
假設某一幀從解析到渲染耗時為t_r
,當t_r>t_l
,則渲染完這一幀后,動畫這個thread
會馬上開始下一幀,也就說這一幀最后的耗時就t_r
。
所以,desc.txt
內設置的這個幀率並不能代表動畫的實際幀率,實際的幀率是和系統開機的performance
有關,因此不是說在desc.txt
設置幀率越大越好,反而容易出現當某一幀耗時較長,就容易給用戶某一幀卡頓的體驗,目前這個FPS
的值一般設置在13
左右。
當然,設置FPS
為13
並不是說系統的performance
比較低,本身在開機動畫階段,系統進入Bootup Android
階段,許多進程需要啟動,系統的主要工作應該集中與開機啟動的進程,因此不建議動畫的圖片過於復雜,導致系統開機的Performance
變差。
3.第二行和第三行,設置順序播放和無限循環播放
第一個參數p是google default
的設計,請保留以p
開頭。
第二個參數1
表示這一行對應folder
所需要循環播放的次數
,如果是0
則表示是無限循環播放
,直到系統ready
后通過被動退出。
第三個參數0
表示這一行對應folder
里面的每一幀圖片依次解析渲染完成后,要進入下一個循環,動畫這個線程需要pause多久
。
第四個參數folder1
表示對應設置規則的folder
的path
。
默認的設計,都是將順序播放的動畫放在一個folder
,定義這個folder
所需要循環的次數;在無限循環的folder
內放置一張圖片,保證動畫沒有收到退出指令的時候,動畫可以一直顯示.
由於循環播放的folder
中的每幀都是以紋理對象存儲在紋理內存中再upload
到GPU
做渲染的,以便下次循環播放不需要重新解析.如果動畫包中的圖片太多或者圖片的size
很大時,則會導致占用較多的memory
,因此為保證開機的performance
,開機動畫不建議太復雜.
至此,本篇已結束,如有不對的地方,歡迎您的建議與指正。同時期待您的關注,感謝您的閱讀,謝謝!