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

转载于:https://juejin.im/post/5bbac689e51d450e5c47991a

更多相关文章

  1. WebView加载网页基本配置
  2. listview的滑动删除框架的使用
  3. android 入门学习笔记 取得文件架构、打开文件、判断文件MimeTyp
  4. LisetView Item高度设置无效
  5. 软键盘弹出后ScrollView设置为滚动
  6. Android(安卓)View动画——自定义View动画
  7. android 系统配置 常用命令 - linux
  8. 调用Android系统设置
  9. Robolectric使用(一)简单使用

随机推荐

  1. Android(安卓)JNI开发入门之二
  2. android开机动画(bootanimation)
  3. Android的Message机制(简单小结)
  4. Android,UI主线程与子线程
  5. Android(安卓)2.3应用开发实战
  6. [转]android Android(安卓)SDK Setup的使
  7. Android(安卓)关于休眠的几个坑点
  8. AVD(android virtual device )路径设置
  9. SlidingDrawer
  10. android的主题