1.在layout文件夹下布局管理器的xml文件中,设置一个按钮组件Button,一个图片组件ImageView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:id="@+id/scrbut"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="现在是竖屏,按下改为横屏"
/>
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/yangning"
/>
</LinearLayout>
2.在src文件夹下Activity的java文件中填写代码获得组件,并给组件设置监听
scrImg=(ImageView)findViewById(R.id.img);
scrBut=(Button)findViewById(R.id.scrbut);
scrBut.setOnClickListener(new ScrButListener());
private class ScrButListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int ori=Calc.this.getRequestedOrientation();
if(ori==ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED){
Calc.this.scrBut.setText("cannot get present screen orientation");
}
else if(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE==ori){
Calc.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
else if(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT==ori){
Calc.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
}
3.设置AdroidManifest.xml文件,使得以上改变获得系统权限的支持
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.yn.demo4.forthpro"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".Calc"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission
android:name="android.permission.CHANGE_CONFIGURATION"/>
</manifest>
4.如果想在系统设置改变后,做一些其他动作,例如改变图像,按钮文本,则需要两部
4.1第一在.在src文件夹下Activity的java文件中填写代码覆写函数
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
if(Configuration.ORIENTATION_PORTRAIT==newConfig.orientation){
Calc.this.scrBut.setText("现在是竖屏,按下转为横屏");
Calc.this.scrImg.setImageResource(R.drawable.yangning);
}
else if(Configuration.ORIENTATION_LANDSCAPE==newConfig.orientation){
Calc.this.scrBut.setText("现在是横屏,按下改为竖屏");
Calc.this.scrImg.setImageResource(R.drawable.yangning1);
}
super.onConfigurationChanged(newConfig);
}
4.2第二步在AdroidManifest.xml文件中设置ConfigChanges
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.yn.demo4.forthpro"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".Calc"
android:label="@string/app_name"
android:configChanges="orientation|keyboard"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission
android:name="android.permission.CHANGE_CONFIGURATION"/>
</manifest>