Android 禁止屏幕旋转

作者: pdog18 | 来源:发表于2018-10-08 10:47 被阅读298次

Android 开发中禁止屏幕旋转

我们通常有两种方案

  • 方案一
    AndroidManifest.xml 中设置activity 中的android:screenOrientation 属性值
  • 方案二
    Activity 中调用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)

他们各自都存在些小问题:

方案一中,需要为清单文件每个activity手动添加属性,每次增加新的activity 都需要重新设置,如果是组件化的情况简直就是灾难,更不要说特定的android:screenOrientationactivity了。
application中的theme似乎可以设置整个applicationandroid:screenOrientation 但是实验结果是没有效果。

方案二中,似乎很完美,只需要在BaseActivity 中写一行代码就好了。但是它有一个严重的问题就是:
activity 切换时,上一个activity 如果是横屏状态,此时切换对应的Activity 它会首先是横屏状态,然后自动切换为竖直的情况。引出的额外问题不做延伸,仅仅是 UI 效果也不能太让人满意,我发现微信 android 端也有这个情况。(在朋友圈点击查看大图,横屏后在横屏状态返回,此时朋友圈界面会进行一次上面描述的旋转)

所以,如果评审不能通过,那么方案二就不能使用。

那么有什么办法可以统一处理呢?

也有两个方法

  • 一是修改类似ActivityThread#handleLaunchActivity()ActivityClientRecord 或者其他对应方法中的ActivityInfo具体需要查看系统启动的源码。
    这似乎有点超出我目前的能力范围了。

  • 二就是很简单的在打包过程中修改AndroidManifest.xml直接为没有设置过android:screenOrientationactivity 添加上一个默认的值了。

方案二的话显然简单的多。这里有我的一个实现方案,有兴趣的朋友可以过目一下。

pdog github :default-manifest-attributes

相关文章

  • Android 禁止屏幕旋转

    Android 开发中禁止屏幕旋转 我们通常有两种方案 方案一在AndroidManifest.xml 中设置ac...

  • android 禁止屏幕旋转和重启activity

    最近在开发中 遇到了一个小坑,当手机屏幕旋转时候,Activity会重新创建即重走onCreate方法。 为了防止...

  • Swift 禁止屏幕旋转

    禁止屏幕旋转 在主控制器文件中添加如下代码: 敲重点禁止屏幕旋转的原理是覆写了控制器类(如果是新建的项目为View...

  • Swift 4.2 禁止旋转屏幕-强制屏幕旋转

    禁止旋转屏幕,有两种方法 1、直接Xcode写死,简单方便 (不推荐) 但是这样有个问题,当需要旋转屏幕或者,在倒...

  • [Android][旋转屏幕]

    1.落笔缘由 最近在研究旋转屏幕,网上可以找到资料,发现他们基本都是在Activity的基础上进行旋转。自己也想研...

  • Android屏幕旋转

    很久没有写文章了,找个时间整理下Android简单的屏幕旋转的生命周期和正确的竖屏锁定设置 生命周期启动Activ...

  • Android 屏幕旋转

    当手机屏幕旋转时我们应当怎么去处理,首先了解下默认情况下Android进行屏幕旋转的原理,当手机进行旋转时重力感应...

  • Android 屏幕旋转

    原理 https://developer.android.com/reference/android/view/D...

  • QmlAndroid旋转屏幕

    android的API setRequestedOrientation可以旋转屏幕 QmlAndroidOrie...

  • Android 设定横屏,禁止屏幕旋转,Activity重置

    转载自:http://blog.csdn.net/u012364372/article/details/51088...

网友评论

    本文标题:Android 禁止屏幕旋转

    本文链接:https://www.haomeiwen.com/subject/dqydaftx.html