剧情设定:系统为MTK默认的系统源码,Phone模式,底部有三个虚拟按键。需求为,设置成默认横屏,设定一个合理的虚拟按键方案。
----------------------------------------------------------------------------------------------------
1. 横屏
修改转屏的角度为0,所以从效果看,旋转270是逆时针的。需要后续解决的问题:Uboot、Kernel、开关机动画需要替换成横屏的资源。
2. 重力传感器xy轴反转
一般改变默认的屏幕方向后,都是必须调整重力传感器方向的,改动如下:
3. 导航Bar看不见图标
这个是横屏后遇到的一个问题,当航Bar只看到黑条,在屏幕0/180度时点击无效,90/270度时点黑条的任何地方底部会有Glow的光晕效果和震动效果,但是键值全都是recentApp。对比正常的当航Bar,recentApp是横向布局时的第一个按键,联系到我们修改了屏幕方向,会不会跟布局方向有关呢?找到系统资源的全局定义文件,修改当航Bar的宽度,原来的是42dip改为100dip,重新编译,就可以看到真相了:导航Bar时竖向放置的。
找到问题了,我们将导航Bar布局文件中,横屏布局和竖屏布局调换,就可以正常显示了。记得将前面导航Bar的宽度还原。
4. 屏蔽导航Bar
这个修改可以有三处,选择最底层的修改方式。
5. 在导航案右侧添加4个虚拟按键(back、home、recApp、menu)
这个修改全部在SystemUI.apk中,首先修改布局文件,为状态栏添加四个按键
四个虚拟按键,除了recentApp需要发送Intent来触发,其他三个键都是直接绑定了键值,可以直接使用。下面要做的事情就是在PhoneStatusBar中实现recentApp点击动作的响应。参考平板模式下statusBar中的实现修改即可。
最后上一张效果图
Doc文档和SystemUI源码已上传,需要的朋友可以到我的资源去下载。