我有一个我想阻止旋转的活动,因为我正在启动一个AsyncTask,屏幕旋转使它重新启动。
有没有办法告诉这个活动“即使用户像疯了一样摇晃他的手机也不要旋转屏幕”?
我有一个我想阻止旋转的活动,因为我正在启动一个AsyncTask,屏幕旋转使它重新启动。
有没有办法告诉这个活动“即使用户像疯了一样摇晃他的手机也不要旋转屏幕”?
当前回答
在你的Manifest文件中,对于每个你想锁定屏幕旋转的Activity添加:如果你想锁定在水平模式:
<activity
...
...
android:screenOrientation="landscape">
或者如果你想锁定在垂直模式:
<activity
...
...
android:screenOrientation="portrait">
其他回答
android: screenOrientation =“肖像” 在应用程序标签<application
and
<活动 ... ... android: screenOrientation = "锁定" >
防止屏幕旋转只需在清单中添加以下一行。
<activity
android:name=".YourActivity"
android:screenOrientation="portrait" />
这对我很有用。
在你的Manifest文件中,对于每个你想锁定屏幕旋转的Activity添加:如果你想锁定在水平模式:
<activity
...
...
android:screenOrientation="landscape">
或者如果你想锁定在垂直模式:
<activity
...
...
android:screenOrientation="portrait">
在AndroidManifest.xml中,ACTIVITY的以下属性就是你所需要的:
android:configChanges="orientation"
因此,完整的活动节点将是:
<activity android:name="Activity1"
android:icon="@drawable/icon"
android:label="App Name"
android:excludeFromRecents="true"
android:configChanges="orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
而不是进入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或更高。所以基本上这是矛的尖端。