就如上次所说的,如果改变了系统屏幕的设置方向,我们不妨可以这么认为,它算是一个触发事件的开始吧,那么假使有人触发了这个事件,我们是否能够直接进行 某些操作呢,如改变界面的UI等?当然不行,因为上面的范例,我们直接是借助setRequestedOrientation这个方法设置的,而在这个方 法中无法实现其他的操作。
android中,我们借助的是另外一个事件——onConfigerationChanged,这个方法也是能够重写的。
示范代码功能很简单,就是在改变屏幕的方向的同时,也改变了点击按钮的text:
package com.mobile.allove.wfp;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class onConfigurationChangedTest extends Activity implements OnClickListener{
private Button mButton;
int intCurrentOrientation;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.Init();
mButton.setOnClickListener(this);
}
public void Init()
{
mButton=(Button) this.findViewById(R.id.Button01);
intCurrentOrientation=this.getRequestedOrientation();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.Button01:
if(this.intCurrentOrientation==ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
{
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
else if(this.intCurrentOrientation==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
{
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
break;
}
}
@Override
public void setRequestedOrientation(int requestedOrientation) {
// TODO Auto-generated method stub
super.setRequestedOrientation(requestedOrientation);
}
@Override
public int getRequestedOrientation() {
// TODO Auto-generated method stub
return super.getRequestedOrientation();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT)
{
mButton.setText("现在是竖屏");
System.out.println("435435435456454");
}
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE)
{
mButton.setText("现在是横屏");
System.out.println("kjkjhugggtvg");
}
super.onConfigurationChanged(newConfig);
}
}
这里需要注意几点,就是首先要设置初始的Orientation,而且还要设置捕捉更改的权限—— Android.permission.CHANGE_CONFIGURATION,还有一点,就是必须在Activity里设置 configChanges属性。这里我们不妨理解为声明!!为了好理解,我也把AndroidManifest.xml文件贴在这里了
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mobile.allove.wfp" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".onConfigurationChangedTest"
android:label="@string/app_name" android:screenOrientation="portrait"
android:configChanges="orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"></uses-permission>
</manifest>
分享到:
相关推荐
5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...
5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...
5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...
3.1 Android的事件处理 145 3.2 基于监听的事件处理 145 3.2.1 事件监听的处理模型 145 3.2.2 事件和事件监听器 148 3.2.3 内部类作为事件监听器类 151 3.2.4 外部类作为事件监听器类 152 3.2.5 ...
5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 –p254 6.1 您有一条短信popup...
5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...
5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 –p254 6.1 您有一条短信popup...
5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 –p254 6.1 您有一条短信popup...
5.21 任务管理器正在运行的程序——RunningTaskInfo 5.22 动态更改屏幕方向——LANDSCAPE与PORTRAIT 5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——...
3.1 Android的事件处理 145 3.2 基于监听的事件处理 145 3.2.1 事件监听的处理模型 145 3.2.2 事件和事件监听器 148 3.2.3 内部类作为事件监听器类 151 3.2.4 外部类作为事件监听器类 152 3.2.5 Activity本身作为...
3.1 Android的事件处理 145 3.2 基于监听的事件处理 145 3.2.1 事件监听的处理模型 145 3.2.2 事件和事件监听器 148 3.2.3 内部类作为事件监听器类 151 3.2.4 外部类作为事件监听器类 152 3.2.5 Activity本身作为...
5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 –p254 6.1 您有一条短信popup...
5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...