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

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


当前回答

你可以试试这种方法

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.itclanbd.spaceusers">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".Login_Activity"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

其他回答

我发现最简单的方法就是把

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

在onCreate中,就在后面

setContentView(R.layout.activity_main);

所以…

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

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

and

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

如果您正在使用Android开发工具(ADT)和Eclipse 你可以到androidmanifest。xml ->应用选项卡->,然后选择你的活动。最后,选择你喜欢的方向。 您可以从众多选项中选择一个。

而不是进入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文件中,对于每个你想锁定屏幕旋转的Activity添加:如果你想锁定在水平模式:

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

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

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