推荐使用 读书导航 极客导航 :125啦极客导航(http://www.91es.com/jike.html)
最近在Android 6.0时出现logo过度到Android动画时出现闪一下和黑屏问题。
查询资料后,在《kernel logo到开机动画之间闪现黑屏(android 5.X)》找到了解决方法,因此摘抄于此作为笔记。
/frameworks/base/cmds/bootanimation/BootAnimation.cpp
删除部分我做了记录,如下
//开机动画走Android()的,注释如下
bool BootAnimation::android()
{
initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");
initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png");
//--------------------delete start------------------------
// 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);
//--------------------delete end------------------------
glEnable(GL_TEXTURE_2D);
glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
.....
return false;
}
//开机动画走自定义动画Move()
bool BootAnimation::movie()
{
String8 desString;
......
mZip->endIteration(cookie);
//--------------------delete start------------------------
// 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);
//--------------------delete end ------------------------
glBindTexture(GL_TEXTURE_2D, 0);
glEnable(GL_TEXTURE_2D);
glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
const int xc = (mWidth - animation.width) / 2;
const int yc = ((mHeight - animation.height) / 2);
nsecs_t frameDuration = s2ns(1) / animation.fps;
Region clearReg(Rect(mWidth, mHeight));
clearReg.subtractSelf(Rect(xc, yc, xc+animation.width, yc+animation.height));
......
return false;
}
如果是原生系统的,那就是改上面两个就可以的,但是由于我们使用的是被芯片公司修改过得源码。
比如Rockchip(瑞芯微),autochips(杰发)等,他们会对代码进行优化有修改。
如果你的代码不是Android源码,可以再查找一下是否有ETC1movie(),MTKmovie()等,如果有,请把下面代码也注释掉。
当然,虽有这个代码,但不一定走了,为了确保万一,还是注释掉为好。
//芯片公司自定义一套动画Move()
bool BootAnimation::ETC1movie()
{
......
mZip->endIteration(cookie);
initShader();
glViewport((mWidth - animation.width) >> 1, (mHeight - animation.height) >> 1,
animation.width, animation.height);
//--------------------delete start------------------------
// clear screen
//glDisable(GL_DITHER);
//glDisable(GL_SCISSOR_TEST);
//glDisable(GL_BLEND);
//glClear(GL_COLOR_BUFFER_BIT);
//eglSwapBuffers(mDisplay, mSurface);
//--------------------delete end------------------------
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, 0);
glUniform1i(mUniformTexture, 0);
......
return false;
}
暂无评论...
随机推荐
[摘]音视频学习系列第(三)篇---wav文件的存储和解析
什么是wavwav是一种无损的音频文件格式,wav文件有两部分,第一部分是文件头,记录一些重要的参数信息,如音频的采样率,通道数,数据位宽,第二部分是数据部分,数据部分可以是PCM,也可以是其它的编码格式的数据为什么要将音频存储wav格式存储为该格式,音乐播放器可以通过读取wav头,识别出它...
[代码]Listener和MainListener
前言这里简单记录一下项目中用的Listener和MainListener。正文隐藏内容!付费阅读后才能查看!¥7多个隐藏块只需支付一次付费阅读参考文章无
[摘]Android IO流读写文件实例
继前文摘抄,此篇是Android IO读写的实例操作。案例0功能:1、创建文件夹、文件 2、遍历文件夹下面的所有文件public class Test1 { public static void main(String[] args) { // TOD...
Android消息机制之四总结
看别人写的Android消息机制分析写得都很溜的,比如Gityuan.com的文章就写的很不错,有兴趣的朋友直接去看他的,我的只是算作自己的流水账吧.虽然写得不好,但自己不写写只看,后期还是会忘记的.多次忘记后我就觉得自己也"总结总结"给自己看,加深一下印象.如果本站文章有误导各位朋友,...
余光中:绝色
美丽而善变的巫娘,那月亮翻译是她的特长却把世界译走了样 把太阳的鎔金译成了流银把烈火译成了冰而且带点薄荷的风味 凡尝过的人都说译文是全不可靠但比起原文来呢却更加神秘,更加美 雪是另一位唯美的译者存心把世界译错或者译对,诗人说只因原文本来就...
C语言之指针
前言记录一下C语言中的指针相关知识,算是回顾之前所学吧。正文指针在C语言中,内存单元的地址称为指针。专门用来存放地址的变量,称为指针变量。存储类型 数据类型 * 指针变量名;int a = 10;# 第一种int *p = &a;# 第二种int *p; //...