禁止屏幕旋转并同时解决以至于导致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了。