响应的系统设置的事件

Configuration简介

 

Configruation cfg = gerResource().getConfiguration();

通过上述代码获得系统的Configuration对象,该对象提供了常用属性来获取系统的配置信息。相关信息参考官方API

 

http://developer.android.com/intl/zh-cn/reference/android/content/res/Configuration.html

 

实例代码如下

声明变量:

1     EditText ori;
2     EditText navigation;
3     EditText touch;
4     EditText mnc;

 

onCreate中的主要代码:

 1 ori = (EditText) findViewById(R.id.ori);
 2         navigation = (EditText) findViewById(R.id.navigation);
 3         touch = (EditText) findViewById(R.id.touch);
 4         mnc = (EditText) findViewById(R.id.mnc);
 5         Button bn = (Button) findViewById(R.id.bn);
 6         bn.setOnClickListener(new View.OnClickListener() {
 7             @Override
 8             public void onClick(View v) {
 9                 Configuration cfg = getResources().getConfiguration();
10                 String screen = cfg.orientation ==
11                         Configuration.ORIENTATION_LANDSCAPE ?
12                         "横向屏幕" : "竖向屏幕";
13                 String mncCode = cfg.mnc + "";
14                 String naviName = cfg.orientation ==
15                         Configuration.NAVIGATION_NONAV ?
16                         "没有方向控制" :
17                         cfg.orientation == 
18                     Configuration.NAVIGATION_WHEEL
19                         ? "滚轮控制方向" : cfg.orientation
20                         == Configuration.NAVIGATION_DPAD
21                         ? "方向键控制方向" : "轨迹球控制方向";
22                 navigation.setText(naviName);
23                 String touchName = cfg.touchscreen == 
24                 Configuration.TOUCHSCREEN_NOTOUCH
25                         ?"无触摸屏" : "支持触摸屏";
26                 ori.setText(screen);
27                 mnc.setText(mncCode);
28                 touch.setText(touchName);
29             }
30         });

 

分别获取了四种属性,屏幕方向,方向控制设备,触摸屏状态和移动网络代号。

 

重写onConfigurationChanged响应系统设置更改

 

如果程序需要监听系统设置的更改,则可以考虑重写ActivityonConfigurationChanged 方法。

 

   

 1      Button bn = (Button) findViewById(R.id.bn);
 2 
 3         bn.setOnClickListener(new OnClickListener() {
 4 
 5             @Override
 6 
 7             public void onClick(View v) {
 8 
 9                 Configuration cfg = getResources().getConfiguration();
10 
11                 if (cfg.orientation ==
12 
13                 Configuration.ORIENTATION_LANDSCAPE) {
14 
15         //setRequestedOrientation 更改屏幕的方向
16 
17                     MainActivity.this.setRequestedOrientation(
18 
19                             ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
20 
21                 }
22 
23                 if (cfg.orientation ==
24 
25      Configuration.ORIENTATION_PORTRAIT) {
26 
27                     MainActivity.this.setRequestedOrientation(
28 
29                             ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
30 
31                 }
32 
33             }
34 
35         });

 

   

 

 

 

        //该方法应该写在onCreate 方法外

// activity的配置发生更改时

newConfig

Configuration: The new device configuration.

 1          @Override
 2         public void onConfigurationChanged (Configuration newConfig){
 3 
 4             super.onConfigurationChanged(newConfig);
 5 
 6             String screen = newConfig.orientation ==
 7 
 8                     Configuration.ORIENTATION_LANDSCAPE ?
 9 
10                     "横向屏幕" : "竖向屏幕";
11 
12             Toast.makeText(this,"系统屏幕方向发生改变" +
13 
14                     "\n修改后的屏幕方向为:" + screen,
15 
16 Toast.LENGTH_LONG).show();
17 
18         }

 

posted @ 2016-05-14 20:52  NeonCowboy  阅读(197)  评论(0编辑  收藏  举报