zoukankan      html  css  js  c++  java
  • Android中getResources().getConfiguration()方法的作用

      Android中Configuration类专门用于描述手机设备上的配置信息,这些配置信息既包括用户特定的配置项,也包括系统的动态设备配置。

    Configuration对象获得:

    1 Configuration configuration = getResources().getConfiguration();

     Configuration对象提供的基本属性可以获取系统的配置信息:

     1     public int densityDpi;      //得到设备的密度
    2 public float fontScale; //获取当前用户设置的字体的缩放因子
    3 public int KeyboardHidden; //该属性会返回一个boolean值用于表示当前的键盘是否可用,该属性不仅 4 //会判断系统的硬件键盘,也会判断系统位于屏幕上的软键盘,如果该系统 5 //的硬 件键盘不可用但软键盘可用该属性会返回KEYBOARDHIDDEN_NO,只 6 //有当两个键盘都不可用的时候才返回KEYBOARDHIDDEN_YES
    7 public int keyboard; //获取当前设备所关联的键盘的类型
    8 public Locale locale; //获取用于当前的Locale
    9 public int mcc; //得到移动信号的国家码
    10 public int mnc; //得到移动信号的网络码
    11 public int navigation; //判断系统上方向导航设备的类型。该属性的返回值: 12 //NAVIGATION_NONAV(无导航)、NAVIGATION_DPAD(DPAD导航)、 13 //NAVIGATION_TRACKBALL(轨迹球导航)、NAVIGATION_WHEEL(滚轮 14 //导航)
    15 public int orientation; //得到系统屏幕的方向,该属性将会返回ORIENTATION_LANDSCAPE(横向 16 //屏幕),ORIENTATION_PORTRAIT(竖向屏幕),ORIENTATION_SQUARE(方 17 //形屏幕)三个属性值之一
    18 public int touchscreen; //获取系统触摸屏的触摸方式。该属性的返回值: 19 //TOUCHSCREEN_NOTOUCH(无触摸屏)、TOUCHSCREEN_STYLUS(触摸笔 20 //式触摸屏)、TOUCHSCREEN_FINGER(接收手指的触摸屏)等属性值

      如果程序需要监听系统设置的更改,这里就需要重写Activity的onConfigurationChanged(Configuration newConfig)的方法,例如我们要实现设置系统的屏幕更改方向并监听,需要有以下几步:                    

      指定清单文件的configChanges属性

    1 <activity android:name=".MainActivity"
    2              android:configChanges="screenSize|orientation">
    3             <intent-filter>
    4               <action android:name="android.intent.action.MAIN"/>
    5               <category android:name="android.intent.category.LAUNCHER" />
    6             </intent-filter>
    7 </activity>

      设置按钮的点击事件,并重写回调方法

     1    public void changeOri(View view){
     2         Configuration configuration=getResources().getConfiguration();
     3         if(configuration.orientation==Configuration.ORIENTATION_LANDSCAPE){
     4             //当前是横屏,需要更改为竖屏
     5             MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
     6         }
     7         if(configuration.orientation==Configuration.ORIENTATION_PORTRAIT){
     8             //当前是竖屏,需要更改为横屏
     9             MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    10         }
    11     }
    12  
    13     @Override
    14     public void onConfigurationChanged(Configuration newConfig) {
    15         super.onConfigurationChanged(newConfig);
    16         String screen=newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE?"横屏":"竖屏";
    17         Toast.makeText(this,"当前屏幕的状态是:"+screen,Toast.LENGTH_SHORT).show();
    18     }

       原文:https://blog.csdn.net/qq_35427437/article/details/85988493

  • 相关阅读:
    你绝对想不到R文件找不到(cannot resolve symbol R)的原因
    你绝对想不到R文件找不到(cannot resolve symbol R)的原因
    如何安装gulp
    简单实现IE9及以下对placeholder的兼容性
    vue 新闻列表滚动效果
    2018数据技术嘉年华-金融峰会·重庆站即将起航!
    高手过招:用SQL解决环环相扣的刑侦推理问题(罗海雄版本)
    实战课堂:为什么更换存储之后一切正常但RAC集群启动不了?
    MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)
    Druid数据库连接池和Druid内置监控系统简单介绍
  • 原文地址:https://www.cnblogs.com/CYCLearning/p/11739170.html
Copyright © 2011-2022 走看看