[DESCRIPTION]
現象:L版本開機時,kernel logo與開機動畫之間閃一幀黑屏。
[SOLUTION]
1.這個現象是因爲,在BootAnimation開始繪圖之前,會先做一次clear screen的動作,避免出現 前面的圖干擾到BootAnimation的顯示。這是Google default design,雖然不可避免,但是可以優化。
優化方法:
通過check main_log先確認播放開機動畫是哪個function,在對應function刪除clear screen的動 作的對應代碼。
源碼位置:/frameworks/base/cmds/bootanimation/BootAnimation.cpp
bool BootAnimation::android() {
initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");
initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png");
/*----------------------------刪除clear screen對應code------------------------*/
// clear screen
glShadeModel(GL_FLAT);
glDisable(GL_DITHER);
glDisable(GL_SCISSOR_TEST);
glClearColor(0,0,0,1);
glClear(GL_COLOR_BUFFER_BIT);
eglSwapBuffers(mDisplay, mSurface);
/*----------------------------刪除clear screen對應code------------------------*/
bool BootAnimation::movie()
/*----------------------------刪除clear screen對應code------------------------*/
// clear screen
glShadeModel(GL_FLAT);
glDisable(GL_DITHER);
glDisable(GL_SCISSOR_TEST);
glDisable(GL_BLEND);
glClearColor(0,0,0,1);
glClear(GL_COLOR_BUFFER_BIT);
eglSwapBuffers(mDisplay, mSurface);
/*----------------------------刪除clear screen對應code------------------------*