Android 事件处理详解(三) —— 响应系统设置的事件[Configuration]

来源:互联网 发布:龙腾管家软件下载 编辑:程序博客网 时间:2024/05/23 22:23

在开发Android应用时,有时候需要让应用程序随系统设置进行调整,比如判断系统的屏幕方向,判断系统方法的方向导航设备等等,有时甚至要根据系统设置的更改做出相应。
这就是响应系统设置事件的必要。

1.Configuration类简介:

Configuration类专门描述手机设备上的配置信息,这些配置信息既包括用户特定的配置项,也包括系统的动态设备配置。通过调用Activity的getResources().getConfiguration()方法获得Configuration对象,然后就可以使用下面常用属性来获取系统的配置信息:
这里写图片描述

2.重写onConfigurationChanged响应系统设置更改:

该方法是一个基于回调的事件处理方法:当系统设置发生更改时,该方法会被自动触动。
这里插一个小知识,在程序中动态的更改系统设置,可以通过调用Activity的setRequestedOrientation(int)方法来修改屏幕的方法。

范例:
动态改变手机屏幕方向。
【当系统设置更改,就会回调方法onConfigurationChanged()】

public class MainActivity extends Activity  {    private Button mButtonto;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mButtonto= (Button) findViewById(R.id.button);        mButtonto.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Configuration configuration=getResources().getConfiguration();//1.获得Configuration对象                if(configuration.orientation==Configuration.ORIENTATION_LANDSCAPE){//如果是横屏,则修改为竖屏                    MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);                }                if(configuration.orientation==Configuration.ORIENTATION_PORTRAIT){//如果是竖屏,则修改为横屏                    MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);                }            }        });    }    //重写方法,监听系统设置的更改,监控屏幕方向的更改    @Override    public void onConfigurationChanged(Configuration newConfig) {        super.onConfigurationChanged(newConfig);        String screen = newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE ? "横向屏幕":"竖向屏幕";        Toast.makeText(this,"屏幕方向修改后为"+screen,Toast.LENGTH_SHORT).show();    }}

但这样还是不能够监听到事件,还需要在menifest中配置android:configChanges属性,该属性可以支持mcc,mnc,locale,touchscreen,keyboard,keyboradHidden,navigation,orientation,screenLayout,uiMode,screenSize,smallestScreenSize,fontScale属性值,而orientation属性值可以指定该Activity可以监听屏幕方法的改变。
且版本最高只能设置成12,否则不会回调onConfigurationChanged()方法

这里写图片描述

0 0
原创粉丝点击