[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------------------------*
本文介绍了一种在L版本系统中消除开机动画前出现短暂黑屏的方法。此现象源于BootAnimation启动前的clearscreen操作,通过在BootAnimation.cpp文件中特定函数删除该操作,可有效优化并避免黑屏,提升用户体验。
582

被折叠的 条评论
为什么被折叠?



