正常
package="com.example.clickeventdemo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:screenOrientation="portrait"
下边的表示,当屏幕方向发生变化时候,捕捉变化并调用主程序当中的
onConfigurationChanged方法
android:configChanges="orientation"
android:name="com.example.clickeventdemo.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<Button
android:id="@+id/but1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="按钮"/>
<ImageView
android:id="@+id/img1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>
首先要实现这些
必须修改我们的配置文件AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
添加下边的内容,表示允许应用改变当前的配置
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
</manifest>
我们的xml文件代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
</LinearLayout>
.java文件
public class MainActivity extends Activity {
private Button change = null;
private ImageView img = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main);
this.change = (Button) super.findViewById(R.id.but1); // 取得按钮
this.img = (ImageView) super.findViewById(R.id.img1); // 取得图片
this.change.setOnClickListener(new MyOnClickListenerImpl()); // 设置监听操作
}
private class MyOnClickListenerImpl implements OnClickListener { // 单击事件
public void onClick(View v) {
if (MainActivity.this.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {// 无法进行画面的旋转
MainActivity.this.change.setText("错误:无法改变屏幕方向。");
} else {
if (MainActivity.this.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) { // 现在的方向是横屏显示
MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// 变为竖屏显示
} else if (MainActivity.this.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) { // 如果为竖屏显示
MainActivity.this
.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); // 变为横屏显示
}
}
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// 表示的是系统设置修改的时候触发
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// 现在的屏幕方向是横屏
MainActivity.this.change.setText("竖屏");
MainActivity.this.img.setImageResource(R.drawable.ic_launcher);// 显示横屏图片
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
// 现在竖屏
MainActivity.this.change.setText("横屏");
MainActivity.this.img.setImageResource(R.drawable.touxiang);// 显示竖屏图片
}
super.onConfigurationChanged(newConfig);
}
}
本文介绍如何在Android应用中实现屏幕方向的动态切换,包括修改AndroidManifest.xml文件来允许配置更改,使用onConfigurationChanged方法响应屏幕方向变化,并通过按钮点击事件触发屏幕方向的横竖屏切换。

3075

被折叠的 条评论
为什么被折叠?



