Android 5.0 开机横屏修改方法
<spanstyle="font-family:Arial,Helvetica,sans-serif;">如果理解了Android的设计的原理,其实这个修改原理十分简单,比一些网上流出来的粗暴的修改方式既美观又实用。</span>
修改分为三部分:
1:上层(Java)修改
既然设计到屏幕的修改,肯定想到了直接修改WMS(比较粗暴的方式)。
其实Android的很多的需求都是通过配置文件来的,这么明显的设计需求只要去找相应的配置就可以了。
core/res/res/values/config.xml
<boolname="config_supportAutoRotation"><spanstyle="color:#ff0000;">false</span></bool> <integername="config_lidOpenRotation"><spanstyle="color:#ff0000;">90</span></integer>
修改后发现开机后,开机画面是横屏显示的,进入锁屏界面,屏幕做了一次旋转操作,这个时候窗口才真正的横屏。
跟需求还不一样,进入锁屏前需要横屏。
所以需要修改WMS的默认方向。
/services/core/Java/com/Android/server/wm/WindowManagerService.Java
intmRotation=<spanstyle="color:#ff0000;">1</span>;
修改后开机发现:开机画面启动后是竖屏的,运行一段时间变成横屏,进入锁屏界面,也是横屏,不用再做横竖切换。
2:底层(C++)修改
开机启动画面,刚开始的时候是竖屏的。
原因很简单:底层的SF初始化的时候肯定是竖屏的得跟WMS匹配。所以修改也很简单。
framework/native/services/surfaceflinger/DisplayDevice.cpp
//initializethedisplayorientationtransform. setProjection(DisplayState::<spanstyle="color:#ff6666;">eOrientation90</span>,mViewport,mFrame);
再开机发现问题来了,开机画面显示有问题,而且进入到锁屏界面前也会闪一下。
3:Bootanimation修改
到第二部的修改一直都很顺利,而且分析的效果跟修改后的显示也是比较相符的。
但是出现的一闪的画面,让我比较苦恼,一直以为是修改的不够彻底,一直找其他初始化的地方是否没修改,找了半天没找到相关的修改,因为应该考虑的地方都已经修改了。
所以接下来只能看Bootanimation了。
终于发现了原因:
status_tstatus=SurfaceComposerClient::getDisplayInfo(dtoken,&<spanstyle="color:#ff0000;">dinfo</span>);
//createthenativesurface sp<SurfaceControl>control=session()->createSurface(String8("BootAnimation"), dinfo<spanstyle="color:#ff0000;">.h</span>,dinfo<spanstyle="color:#ff0000;">.w</span>,PIXEL_FORMAT_RGB_565);
Surface申请的时候是按照竖屏申请的,这个时候我们的屏幕已经是横屏了。
修改后运行,发现完美解决了开机横屏的问题。
对于进入锁屏前一闪的问题:这个也是由Bootanimation导致,因为Bootanimation开始的时候是竖屏,WMS设置屏幕为横屏的时候,Bootanimation还没有消失,所以导致了一闪的问题。
抓住这个修改主线,不论Android怎么变,是之前4.0还是将来的6.0,都是可以修改的。(PS:这里不涉及fastboot的logo的修改,这个修改更简单替换图片就可以了)
以上所述是小编给大家介绍的Android5.0开机横屏修改方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!