禁止屏幕旋转并同时解决以至于导致Activity重启的方法

1.禁止屏幕旋转
在AndroidManifest.xml的每一个需要禁止转向的Activity配置中加入android:screenOrientation属性。

//landscape(横向)portrait(纵向)
android:screenOrientation="landscape"

2.避免屏幕旋转时重启Activity
Android中每次切换屏幕方向时都会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置。
首先,在AndroidManifest.xml文件中重新定义方向(给每个需要的Activity加上android:configChanges属性)。

<activity android:name="app.activity.MyActivity"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

同时,在需要的Activity中重写onConfigurationChanged(Configuration newConfig)方法。

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig); if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE) {
//横向
setContentView(R.layout.file_list_landscape);
} else {
//纵向
setContentView(R.layout.file_list);
}
}

这样在屏幕旋转时就不会重启Activity了。

上一篇:C++进阶 STL(1) 第一天 [容器,算法,迭代器] string容器 vector容器 deque容器


下一篇:Android之layout_weight解析