1. 两种方式强制设置横屏或竖屏
第一种,通过修改Activity的onResume()方法
@Override
protected void onResume() {
/**
* 设置为横屏
*/
if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
super.onResume();
}
第二种,在工程的AndroidManifest.xml文件中,对Activity节点添加
android:screenOrientation="portrait" <!--竖屏-->
android:screenOrientation="landscape" <!--横屏-->
2. 屏幕旋转
不加任何旋转屏幕的处理代码的时候,屏幕旋转时将会导致系统把当前的activity销毁,重新打开。
如果只是简单的界面调整,我们可以阻止此问题的发生,屏幕旋转而自己调整屏幕的元素重构。
首先我们需要修改AndroidManifest.xml文件
<activity android:name="com.charein.dingdang.MainActivity" >
</activity>
<!--修改为:-->
<activity android:name="com.charein.dingdang.MainActivity"
android:configChanges="orientation|keyboard">
</activity>
然后重写onConfigurationChanged方法
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
Log.v(" == onConfigurationChanged");
processLayout();
}
当碰到activity在切换到后台或布局从横屏切换到竖屏,会销毁该activity并重新打开。
为了避免这种情况,我们可以在AndroidManifest.xml中的activity元素加入这个属性
android:configChanges="orientation|keyboardHidden"就能有效避免onCreate方法的重复加载,
同时在Activity的java文件中重载onConfigurationChaned(Configuration newConfig)这个方法。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
}
else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
}
}
关于Activity的横竖屏切换问题,可以通过AndroidManifest.xml文件中的Activity来配置:
android:screenOrientation=["unspecified" | "user" | "behind" |screenOrientation 用来指定Activity的在设备上显示的方向,每个值代表如下含义:
"landscape" | "portrait" |
"sensor" | "nonsensor"]
"unspecified " | 默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向. |
"landscape " | 横屏显示(宽比高要长) |
"portrait " | 竖屏显示(高比宽要长) |
"user " | 用户当前首选的方向 |
"behind " | 和该Activity下面的那个Activity的方向一致(在Activity堆栈中的) |
"sensor " | 有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。 |
"nosensor " | 忽略物理感应器,这样就不会随着用户旋转设备而更改了 ( "unspecified "设置除外 )。 |