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,真的横过来了。运气是真的很重要。
- Android Launcher3 强制横屏
- Android 强制横屏
- android 强制横屏
- Android 强制横屏
- Android launcher3 -- launcher3源码1
- Android launcher3 -- launcher3源码2
- Android launcher3 -- launcher3源码3
- [Android]强制系统横屏
- android全屏,强制竖屏,强制横屏
- Android开发之强制横屏和强制竖屏
- android 编译Launcher3 出错
- android launcher3 安装卸载
- android launcher3 布局简介
- Android launcher3 循环桌面
- android 强制横屏的方法
- android 强制横屏的方法
- Android 程序中设置强制横屏
- 将android 应用强制横屏
- 华为上机题汇总(一)
- Android 缓存
- Lua数据类型
- Hibernate对象的生命周期及三种状态
- 购物车的实现原理
- Android Launcher3 强制横屏
- UIView与CALayer的区别,很详细
- 【LeetCode-21】 Merge Two Sorted Lists(C++)
- Eclipse项目小红叉
- 怎么实现EDIUS中倒影的制作
- CentOS7防火墙设置
- eclipse打包apk时遇到的问题
- 直播系统的准备工作-android版开源播放器ijkplayer
- 理解Fragment生命周期