响应的系统设置的事件
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响应系统设置更改
如果程序需要监听系统设置的更改,则可以考虑重写Activity的onConfigurationChanged 方法。
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 }