Android系统在开启自动切换横竖屏的情况下,转动手机就会自动切换横竖屏,或者在推开键盘时也会自动切换到横屏。但是有时我们的程序只针对竖屏做了优化,在横屏时显示就会乱,影响用户体验,所以我们必须禁止系统自动切换。要达到这个目标,其实很简单。
在AndroidManifest.xml中,所有的Activity标签都加上android:screenOrientation属性,横屏值为landscape,竖屏值为portrait。这样基本实现了锁定横屏或竖屏,但是在一些有侧滑键盘的手机上(比如说我的Milestone),推开键盘的时候,Activity会自动重启,要避免在这种情况下重启Activity,可以在androidmanifest.xml文件中的每个activity加上android:configChanges=”keyboardHidden|orientation”属性,然后重写onConfigurationChanged方法
1
2
3
4
5
6
7
Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
setContentView(R.layout.main);
}
不过,这样载入的只是main.xml默认设置,如果在程序代码中修改过布局(改过TextView的Text之类),是不会显示修改后的结果的。
在AndroidManifest.xml中,所有的Activity标签都加上android:screenOrientation属性,横屏值为landscape,竖屏值为portrait。这样基本实现了锁定横屏或竖屏,但是在一些有侧滑键盘的手机上(比如说我的Milestone),推开键盘的时候,Activity会自动重启,要避免在这种情况下重启Activity,可以在androidmanifest.xml文件中的每个activity加上android:configChanges=”keyboardHidden|orientation”属性,然后重写onConfigurationChanged方法
1
2
3
4
5
6
7
Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
setContentView(R.layout.main);
}
不过,这样载入的只是main.xml默认设置,如果在程序代码中修改过布局(改过TextView的Text之类),是不会显示修改后的结果的。