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

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

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

案例源码分析:MainActivity.java

单击事件代码:

		button.setOnClickListener(new OnClickListener() {


			@Override
			public 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方法:

	@Override
	public 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值