我有一个我想阻止旋转的活动,因为我正在启动一个AsyncTask,屏幕旋转使它重新启动。

有没有办法告诉这个活动“即使用户像疯了一样摇晃他的手机也不要旋转屏幕”?


当前回答

您必须在manifest.xml文件中添加以下代码。 它不应该旋转的活动,在该活动中添加此元素

android:screenOrientation="portrait"

那么它就不会旋转。

其他回答

Activity.java

@Override     
 public void onConfigurationChanged(Configuration newConfig) {       
        try {     
            super.onConfigurationChanged(newConfig);      
            if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {      
                // land      
            } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {      
               // port       
            }    
        } catch (Exception ex) {       
     }   

AndroidManifest.xml

 <application android:icon="@drawable/icon" android:label="@string/app_name">
  <activity android:name="QRCodeActivity" android:label="@string/app_name"
  android:screenOrientation="landscape" >
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>

 </application>

在你的Manifest文件中,对于每个你想锁定屏幕旋转的Activity添加:如果你想锁定在水平模式:

<activity
        ...
        ...
        android:screenOrientation="landscape">

或者如果你想锁定在垂直模式:

<activity
            ...
            ...
            android:screenOrientation="portrait">

android: screenOrientation =“肖像” 在应用程序标签<application

and

<活动 ... ... android: screenOrientation = "锁定" >

而不是进入AndroidManifest,你可以这样做:

screenOrientation = getResources().getConfiguration().orientation;
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
... AsyncTask

screenOrientation = getResources().getConfiguration().orientation;


@Override
protected void onPostExecute(String things) {
    context.setRequestedOrientation(PlayListFragment.screenOrientation);
    or 
    context.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
}

唯一的缺点是它要求API级别18或更高。所以基本上这是矛的尖端。

您必须在manifest.xml文件中添加以下代码。 它不应该旋转的活动,在该活动中添加此元素

android:screenOrientation="portrait"

那么它就不会旋转。