Android Launcher3 强制横屏

来源:互联网 发布:网络餐饮监管存在问题 编辑:程序博客网 时间:2024/05/29 10:43

  在老板的各种威逼利诱之下开始搞Launcher,一周下来也误打误撞地解决了一些需求,用几篇文章来做一个总结。系统版本是5.1

  第一个需求是Launcher的横屏显示,其实客户真正的需求是系统横屏,刚开始什么都不知道,就去研究Launcher怎么横屏。

  从网上找到Android Studio平台的代码,才知道所谓的Launcher其实就是个应用,只不过是比较牛逼的系统应用而已。源代码可以去官网下载,地址是:https://android.googlesource.com/platform/packages/apps/Launcher3。

  既然是应用,那方向就可以在清单文件里通过screenOrientation设置。我之前还奇怪为什么我的手机桌面不能重力感应,原来源码里screenOrientation的值是”nosensor“。将nosensor改为landscape,部署到手机,成功!

  刚高兴了没一会,发现在linux系统下整机编译后Launcher还是竖着的。这里说明一下,我们这个项目是要做一个整机,不是只改Launcher。

  查资料,发现Launcher里有个方法会解锁屏幕锁定:unlockScreenOrientation(true),将true改为false,即不解锁屏幕锁定。然并卵。又试着在onResume里转屏:

if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);                }
  依然并卵。

  这个时候才开始想到为什么不干脆让整个系统都转过来,去framwork层改。

  网上一番查找验证后终于解决问题。修改frameworks\base\policy\src\com\android\internal\policy\impl目录下的PhoneWindowManager.java的rotationForOrientationLw方法,将所有return改成:

return mLandscapeRotation;

  mLandscapeRotation为默认的横屏方向。不要使用Surface.ROTATION_0,因为该值是会根据当前设备的宽高动态调整的。 

  大功告成。

  期间还有个小插曲。用上面的方法改好后我单独编译了下frameworks,然后Download到设备上,不行。这时候我已经放弃了,跟老板说让驱动兄弟去弄吧。结果第二天驱动兄弟花两个小时把整个项目重新编译了下屏幕竟然横过来了。我再在我的设备上Download了下system.img,真的横过来了。运气是真的很重要。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 2个月里小孩好哭怎么办 两个月宝宝闹觉怎么办 6岁儿童视力0.5怎么办 单一的三系减少怎么办 血小板低到50该怎么办 放化疗后白细胞低怎么办 化疗后白细胞低发烧怎么办 全程c反应蛋白高怎么办 儿童c反应蛋白高怎么办 c反应蛋白高是怎么办 新生儿c反蛋白高怎么办 c反应蛋白高发烧怎么办 血沉高到50了怎么办啊 血沉和超敏偏高怎么办 孕37周血糖偏高怎么办 孕37周血糖7.0多怎么办 孕妇超敏crp偏高怎么办 高敏c反应蛋白高怎么办 孕17周尿蛋白高怎么办 血小板低到20该怎么办 血象高发烧39度怎么办 新生儿血象3万多怎么办 血象高发烧不退怎么办 半岁宝宝血象高怎么办 5-6小孩免疫力差怎么办 快速c反应蛋白高怎么办 15个月宝宝发烧怎么办 小孩发烧到40度怎么办 孩子发烧到39度怎么办 宝宝抵抗力差总生病怎么办 献血前没休息好怎么办 拔了牙齿一直流血怎么办 拔牙后血块掉了怎么办 生血功能不强怎么办 孕妇白球比偏低怎么办 凝血因子Ⅷ很高怎么办 怀孕一个月上火了怎么办 38周了还没入盆怎么办 妊娠33周血压高怎么办 孕34周突然流血怎么办 达英35漏服一天怎么办