本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!

相信大家对这个属性已经耳熟能详,如果大家受过转屏的折磨的话!

老规矩,先讲讲官方文档是怎么说的。为什么需要这个属性呢?原因很简单,当前手机信息、状态发生改变时,它就会被销毁然后重启动,浪费资源;怎么来防止这类情况发生呢?很好,onConfigurationChanged给我们带来了福音!

那么哪些配置信息发生改变,会产生状况呢?下面我们来一起看看!

mcc:移动设备国家代码(Mobile Country Code,MCC)更换的Sim卡改变了MCC.

mnc:移动设备网络代码(Mobile Network Code,MNC)更换的Sim卡改变了MNC.

通过某个国家的国家代码和网络代码共同确定当前手机网络运营商;因为同一个网络在不同国家可能运营商不同。

locale:用户选择一种新的语言

touchscreen:更换手机屏幕.

keyboard:键盘类型发生改变,如更换外置键盘.

keyboardHidden:手机键盘是否可显示被设置,如已使用外置键盘.

navigation:导航系统发生改变.

screenLayout:手机屏幕布局发生改变,如新的屏保被激活.

fontScale:手机字体发生改变.

uiMode:2.2系统之后才出现,如用户把手机放桌子上、车子上或默认模式被启用.

orientation:手机屏幕切换,如横竖屏;如果运行sdk在13及以上,也需要加上screenSize.

screenSize:可用屏幕大小发生改变;sdk在12及以下不需要注意.

smallestScreenSize:手机屏幕发生改变,且不用顾及转屏的问题;如放到一个投影仪查看手机,API13以上添加的属性.

layoutDirection:手机屏幕左右或上下互换,API17以上添加的属性.

那么这些情况我们说清楚了,我们具体来讲讲为什么要监听这些状况,以及安卓为什么要来设计这么多状况(一句话,为满足用户使用手机的多样性)?

举例说明:讲述设置android onConfigurationChanged的意义

不设置时,横屏导致当前Activity生命周期重新执行一次,竖屏两次

只设置为orientation时,横竖屏则只执行一次

而设置为orientation|keyboardHidden,则生命周期不再执行,只是执行onConfigurationChanged方法,这样就减少了我们代码的复杂性

说了这么多好处,那么怎样做,才能做到呢?

首先加入权限  :

<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />

然后给Activity设置属性:

如android:configChanges="orientation|keyboard"

最后在Activity的onConfigurationChanged加载不同的布局,或采取相应的操作即可。

今天就暂时讲到这里,日后遇到类似问题或者网友答疑,再来更新!

小知识记录(转):

getRawX()和getRawY():获得的是相对屏幕的位置.
getX()和getY():获得的永远是相对view的触摸位置坐标(这两个值不会超过view的长度和宽度)。
getLeft , getTop, getBottom,getRight, 这个指的是该控件相对于父控件的距离.

android onConfigurationChanged讲解的更多相关文章

  1. Android onConfigurationChanged的作用

    API原文说明: android:configChangesLists configuration changes that the activity will handle itself. When ...

  2. Android开发工程师文集-Android知识点讲解

    前言 大家好,给大家带来Android开发工程师文集-Android知识点讲解的概述,希望你们喜欢 WebView讲解 一般通过Intent调用系统的浏览器: Uri uri = Uri.parse( ...

  3. 四 Android Capabilities讲解

    本文转自:http://www.cnblogs.com/sundalian/p/5629429.html Android Capabilities讲解   1.Capabilities介绍 可以看下之 ...

  4. android onConfigurationChanged的那点事

    Android学习笔记——关于onConfigurationChanged   从事Android开发,免不了会在应用里嵌入一些广告SDK,在嵌入了众多SDK后,发现几乎每个要求在AndroidMan ...

  5. Android onConfigurationChanged(Configuration cfg) 无法触发问题

     1.android:configChanges="orientation|keyboardHidden"的使用  当在activity加上android:configChange ...

  6. 五 Android Capabilities讲解

    1.Capabilities介绍 可以看下之前代码里面设置的capabilities DesiredCapabilities capabilities = new DesiredCapabilitie ...

  7. Appium python自动化测试系列之Android知识讲解(三)

    ​3.1 ADB工具讲解 3.1.1 什么是ADB呢? 我们不去解释官方语言的翻译,给大家说一个通熟易懂的说法,ADB我理解为他就是电脑和手机连接的桥梁.此连接不是充电的连接,大家不要混淆,说他是一个 ...

  8. Android onConfigurationChanged 收不到回调

    我返现,90度横屏 旋转到270度横屏onConfigurationChanged 是收不到回掉的.尽管清单里面声明了什么: android:configChanges="orientati ...

  9. Android onConfigurationChanged用法(规避横竖屏切换导致的重新调用onCreate方法)

    onConfigurationChanged的目的是为了规避横竖屏切换干掉activity而重新调用onCreate方法的问题:有的时候,我们希望重新进入OnCreate生命周期,此时可以调用onSa ...

随机推荐

  1. 张艾迪(创始人):发明Global.World.224C的天才

    Eidyzhang: Genius.Founder.CEO.23 I 世界级最高级创始人.世界最高级FounderCEO 出生在亚洲中国.Eidyzhang 拥有黑色头发白色皮肤(20岁)大学辍学生. ...

  2. 2016年31款轻量高效的开源JavaScript插件和库

    目前有很多网站设计师和开发者喜欢使用由JavaScript开发的插件和库,但同时面临一个苦恼的问题:它们中的大多数实在是太累赘而且常常降低网站的性能.其实,其中也有不少轻量级的插件和库,它们不仅轻巧有 ...

  3. 最小生成树练习3(普里姆算法Prim)

    风萧萧兮易水寒,壮士要去敲代码.本女子开学后再敲了.. poj1258 Agri-Net(最小生成树)水题. #include<cstdio> #include<cstring> ...

  4. vs版本与.net framework 版本对应

    vs2002  .net framework 1.0 vs2003 版本号:7.x  .net framework 1.1   window server 2003 vs2005 版本号:8.x  . ...

  5. Android TextView标签的显示

    在默认情况下,如果一个TextView中的文字太多,会跨行显示, 通过下面两个参数的设置,可以使TextView固定显示一行,未显示完成的后面用...... android:maxLines=&quo ...

  6. java并发带返回结果的批量任务执行

    转载:http://www.it165.net/pro/html/201405/14551.html 一般情况下,我们使用Runnable作为基本的任务表示形式,但是Runnable是一种有很大局限的 ...

  7. 在SQLite中创建数据库时总是提示错误?

    答案:原先以为是因为编码影响的其实不是,是因为逗号和分号的原因,不是标准的英文状态下的格式

  8. Java:一个简单的Java应用程序

    /** * 这是文档注释 * @version  * @author  */ /* 这之间的内容也是注释 */ //这是行注释 public class FirstSample { public st ...

  9. 亿级Web系统搭建——单机到分布式集群[转]

    当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...

  10. HDU 1681 Frobenius

    题目链接:Frobenius 思路:想了很久还是没转过弯来. 递推. 初始化vis[0] = 1,每次有四种方法扩展,这样能扩展到所有能被表示的数.上界的判定,如果一万以内的数都能被表示,那以后的数肯 ...