• android onConfigurationChanged讲解


                                              

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


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


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

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

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

    mnc:移动设备网络代码(Mobile Network CodeMNC)更换的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 getTopgetBottom,getRight这个指的是该控件相对于父控件的距离.




  • 相关阅读:
    4月13日
    java线程池开启多线程
    cenos 7 zookeeper Error contacting service. It is probably not running
    io.lettuce.core.RedisCommandTimeoutException: Command timed out
    springboot java jar指定启动的jar外部配置文件
    ApplicationContextAware
    YYYYMMdd和yyyyMMdd的区别
    gpg加解密异常
    第四周学习及读书笔记
    第3章 直流电机的工作原理及特性 学习笔记(二)
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6147378.html
Copyright © 2020-2023  润新知