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

生命周期

启动Activity会执行如下方法:

onCreate –> onStart –> onResume

之后旋转屏幕,则Activity会被销毁并重新创建,之后便会执行如下方法:

onPause –> onSaveInstanceState –> onStop –> onDestroy

–> onCreate –> onStart–>onRestoreInstanceState –> onResume

在AndroidManifest配置文件里声明android:configChanges属性

默认屏幕旋转会重新创建,当然可以通过在配置文件里加上如下代码:

android:configChanges="keyboardHidden|orientation|screenSize"(sdk>13时需加上screenSize)

这个时候再旋转屏幕便不会销毁Activity,这时候再旋转屏幕可以看到只会执行onConfigurationChanged方法,有什么在屏幕旋转的逻辑可以重写这个方法.

public void onConfigurationChanged(Configuration newConfig) {

if (newConfig.orientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {

// TODO:

}

super.onConfigurationChanged(newConfig);

}

屏幕纵向固定

android:name=".sign.region.RegionActivity"

android:label="@string/region_switch"

android:screenOrientation="portrait" />

android:ConfigChanges:在Activity中设置相应属性,当该Activity中配置的相应状态发生改变,则不交给系统处理(系统处理:销毁Activity并重新启动Activity),而是系统回调onConfigurationChanged()方法,我们在onConfigurationChanged()方法中对指定状态的改变进行捕捉,并自定义处理。

设置方法:将下列字段用“|”符号分隔开,例如:“locale|navigation|orientation”

“mcc“ 移动国家号码,由三位数字组成,每个国家都有自己独立的MCC,可以识别手机用户所属国家。

“mnc“ 移动网号,在一个国家或者地区中,用于区分手机用户的服务商。

“locale“ 所在地区发生变化。

“touchscreen“ 触摸屏已经改变。(这不应该常发生。)

“keyboard“ 键盘模式发生变化,例如:用户接入外部键盘输入。

“keyboardHidden“ 用户打开手机硬件键盘

“navigation“ 导航型发生了变化。(这不应该常发生。)

“orientation“ 设备旋转,横向显示和竖向显示模式切换。

“fontScale“ 全局字体大小缩放发生改变

从Android 3.2(API 13),在设置Activity的android:configChanges="orientation|keyboardHidden"后,还是一样会重新调用各个生命周期的。因为screen size也开始跟着设备的横竖切换而改变。所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设置"orientation",你还必须设置"ScreenSize"。

android:screenOrientation参数设置

android:screenOrientation设定该活动的方向, 该值可以是任何一个下面的字符串:

"unspecified":默认值. 由系统选择显示方向. 在不同的设备可能会有所不同.

"landscape":橫向

"portrait":纵向

"user":用戶当前的首选方向

"behind":与在活动堆栈下的活动相同方向

"sensor":根据物理方向传感器确定方向. 取决于用戶手持的方向, 当用戶转动设备, 它跟隨改变.

"nosensor":不经物理方向传感器確定方向. 该传感器被忽略, 所以当用戶转动设备, 显示不會跟隨改变. 除了这个区别,系統选择使用相同的政策取向对于“未指定”设置. 系統根据“未指定”("unspecified")设定选择相同显示方向.

竖屏锁定正确姿势

android:name=".sign.region.RegionActivity"

android:configChanges="orientation|keyboardHidden|screenSize"

android:label="@string/region_switch"

android:screenOrientation="portrait" />

android全局屏幕自动旋转,Android屏幕旋转相关推荐

  1. android 阅读器自动滚动,Android编程实现小说阅读器滑动效果的方法

    本文实例讲述了Android编程实现小说阅读器滑动效果的方法.分享给大家供大家参考,具体如下: 看过小说都知道小说阅读器翻页有好多种效果,比如仿真翻页,滑动翻页,等等.由于某种原因,突然想写一个简单点 ...

  2. Android全局修改字体大小,Android 仿微信全局字体大小调整

    image 目录 一.前言 二.效果预览 三.实现步骤 1.自定义字体调整控件 2.滑动按钮改变当前页面预览字体大小 3.返回时,保存放大倍数并重启应用 4.初始化应用时配置字体放大倍数. 四.Dem ...

  3. android 进度条自动增长,Android 进度条自动前进效果的实现代码

    今天给大家分享进度条自动前进功能的实现,先给大家分享实现效果图,感觉不错可以参考实现代码. 效果如下图: 首先布局要设置进度条最大值: android:id="@+id/pro1" ...

  4. android系统相机自动录像,android 调用系统相机录像并保存

    1.在AndroidManifest.xml中添加如下代码 tools:ignore="ProtectedPermissions" /> android:authoritie ...

  5. android 静态图片自动切换,Android静态图片人脸识别的完整demo(附完整源码)

    Android静态图片人脸识别的完整demo(附完整源码) 来源:互联网 作者:佚名 时间:2015-03-24 20:07 本文介绍了android静态识别人脸并进行标记人眼位置及人脸框的完整dem ...

  6. Android开发屏幕自动变暗,Android实现长时间不用屏幕变暗

    直接上代码,代码如下: import android.app.Activity; import android.os.Bundle; import android.os.Handler; import ...

  7. android看彩信自动退出,Android短彩信收发流程(应用层)

    下图为ComposeMessageActivity中confirmSendMessageIfNeeded部分的信息发送流程.主要以接收者有效性的确认为主,然后转向sendMessage方法进行发送. ...

  8. android如何设置自动补,Android Studio 中设置代码块自动补齐

    AS中很多提示键,并不如Eclipse中做的好,需要我们自己去自定义.这里以switch...case为例,讲解一下如何设置代码自动补全. 1.进入settings -->  Editor -- ...

  9. android 录屏自动运行,Android实现录屏直播+远程控制(二)

    前言 前面Android实现录屏直播+远程控制(一)的文章说到Android5.0的录屏直播实现方式,今天来说说实现录屏直播的另外一种方案 1 启动一个后台服务实现录屏 1.服务的创建这边就不在赘述了 ...

  10. android全局轮询机制,Android轮询机制

    在消息的获取上是选择轮询还是推送得根据实际的业务需要来技术选型,例如对消息实时性比较高的需求,比如微博新通知或新闻等那就最好是用推送了.但如果只是一般的消息检测比如更新检查,可能是半个小时或一个小时一 ...

最新文章

  1. 网络模型--Densely Connected Convolutional Networks
  2. [转载]Python爬虫入门三之Urllib库的基本使用
  3. python语法笔记(六)
  4. 解决方案:用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。
  5. 面向dba的linux shell 脚本简介,面向 DBA 的 Linux Shell 脚本简介
  6. Problem - 6111迷宫出逃
  7. 你知道自己执行的是哪个jre吗?
  8. c语言建立动态链表ppt,C语言链表讲解.ppt
  9. 测试管理 | 4种优先级排序方法一定要掌握
  10. java万年历表怎么输出6_用Java编程输出万年历的功能实现
  11. 最新斗鱼JS逆向分析
  12. 软件过程评估和软件能力评价的方法与步骤
  13. css预处理器--sass学习($变量名)
  14. 幅度和幅值有区别吗_你知道避雷器与浪涌保护器二者的区别吗?
  15. 自定义镜像迁移实例到新的区域(实例启动异常排解)
  16. android桌面工具,不一样的Android桌面小工具
  17. 百度搜索查找关键词技巧-信息收集能力
  18. Android ADB常用指令
  19. Java编程笔记6:接口
  20. 2022人才引进落户上海的档案是怎么处理的?

热门文章

  1. 【C语言】飞翔的小鸟游戏
  2. 每日一记录,2022年1月5日
  3. 宝马 OR 奥迪?NONONO,还得看我Li Auto,新款六座SUV强势来袭
  4. chrome首页被hao123篡改 解决方法
  5. Typora自制主题
  6. 下方点击出项上方对应的插件_魔兽世界MiDKP3.0插件使用说明
  7. 山东大学暑期实训——智能人物画像综合分析系统
  8. Leetcode 739 每日温度
  9. 栈与队列篇:347. 前 K 个高频元素(难度 中等)
  10. iCloud开发入门