概述
Android 开发中禁止屏幕旋转
我们通常有两种方案
- 方案一 在
AndroidManifest.xml
中设置activity
中的android:screenOrientation
属性值 - 方案二 在
Activity
中调用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
他们各自都存在些小问题:
方案一中,需要为清单文件每个activity
手动添加属性,每次增加新的activity
都需要重新设置,如果是组件化的情况简直就是灾难,更不要说特定的android:screenOrientation
的activity
了。 在application
中的theme
似乎可以设置整个application
的android:screenOrientation
但是实验结果是没有效果。
方案二中,似乎很完美,只需要在BaseActivity
中写一行代码就好了。但是它有一个严重的问题就是: 当activity
切换时,上一个activity
如果是横屏状态,此时切换对应的Activity
它会首先是横屏状态,然后自动切换为竖直的情况。引出的额外问题不做延伸,仅仅是 UI 效果也不能太让人满意,我发现微信 android 端也有这个情况。(在朋友圈点击查看大图,横屏后在横屏状态返回,此时朋友圈界面会进行一次上面描述的旋转)
所以,如果评审不能通过,那么方案二就不能使用。
那么有什么办法可以统一处理呢?
也有两个方法
-
一是修改类似
ActivityThread#handleLaunchActivity()
中ActivityClientRecord
或者其他对应方法中的ActivityInfo
具体需要查看系统启动的源码。 这似乎有点超出我目前的能力范围了。 -
二就是很简单的在打包过程中修改
AndroidManifest.xml
直接为没有设置过android:screenOrientation
的activity
添加上一个默认的值了。
方案二的话显然简单的多。这里有我的一个实现方案,有兴趣的朋友可以过目一下。
pdog github :default-manifest-attributes
转载于:https://juejin.im/post/5bbac689e51d450e5c47991a
最后
以上就是矮小硬币为你收集整理的Android 禁止屏幕旋转的全部内容,希望文章能够帮你解决Android 禁止屏幕旋转所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复