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

posted @ 2015-10-15 11:41  Yuan丶野幻想  阅读(1023)  评论(0编辑  收藏  举报