onConfigurationChanged--基于回调的事件处理方法demo案例

来源:互联网 发布:淘宝嘉年华什么活动 编辑:程序博客网 时间:2024/05/21 23:34

目标:通过点击按钮实现屏幕横竖屏的切换,同时更换图片。

知识点:点击事件的运用,更改系统权限的设置以及onConfigurationChanged回调事件的学习。

案例源码分析:MainActivity.java

单击事件代码:

button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {// 表明无法旋转屏幕button.setText("错误");} else {if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {// 表明是横屏让它竖屏显示setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);} else if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {// 表明是竖屏让它横屏显示setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}}}});

以上代码调用了Activity类的getRequestedOrientatiion方法获取当前屏幕的方向以及ActivityInfo类的常量进行屏幕横竖屏的设置。

只有这样还不够,因为操作了系统设置则需要在AndroidMainfest.xml中配置权限:

<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />

这样就能实现点击按钮进行屏幕的切换,如果需要横竖屏切换时更改图片则需要重写onConfigrationChanged方法:

@Overridepublic void onConfigurationChanged(Configuration newConfig) {if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {// 如果是横屏就换横屏图片imageView.setImageResource(R.drawable.mldn_landscape);} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {// 如果是竖屏就换竖屏图片imageView.setImageResource(R.drawable.mldn_portrait);}super.onConfigurationChanged(newConfig);}

也可在AndroidManifest.xml的activity标签中添加默认的Activity屏幕方向Landscape横屏,Portrait竖屏:

android:screenOrientation="portrait"

必须注意的是onConfigurationChanged方法的触发也需要在activity标签中指明

android:configChanges="orientation" 

意思是当这个Activity改变了系统的设置如 横竖屏切换等 就会触发onConfigurationChanged方法,从而更换了图片。


注意:项目清单中的android:targetSdkVersion最高只能设置为12,不然无法触发onConfigurationChanged事件

<uses-sdk   android:minSdkVersion="10"  android:targetSdkVersion="12" />


0 0