锁定屏幕方向(Android)

我正在编写一个 Android 应用程序,它使用带有不同内容(活动)的选项卡。 在其中一个活动中,我想锁定屏幕方向为“横向”模式, 但在其他活动中,我希望正常的方向(根据传感器)。

我现在要做的就是给你打电话

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

当我切换到横向模式的活动,和

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

当我切换回其他的活动。但是,这似乎不工作, 整个应用程序锁定。解决这个问题的常规方法是什么?

319605 次浏览

在 Manifest 中,可以设置屏幕方向为横向:

<activity android:name="MyActivity"
android:screenOrientation="landscape"
android:configChanges="keyboardHidden|orientation|screenSize">
...
</activity>

其中 MyActivity是一个你想留在景观。

当屏幕旋转时,android:configChanges=...线阻止 onResume()onPause()被调用。如果没有这条线,轮换会按你的要求进行但是电话还是会打的。

注意: < Android 3.2(API 级别13)需要 keyboardHiddenorientation,并且所有三个选项都需要3.2或更高版本,而不仅仅是 orientation

我也有过类似的问题。

我进来的时候

<activity android:name="MyActivity" android:screenOrientation="landscape"></activity>

在清单文件中,这导致该活动在横向显示。然而,当我回到以前的活动,他们显示在风景,即使他们被设置为肖像。然而,通过添加

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

紧接着目标活动的 OnCreate 部分解决了问题。

在您的项目的 Android 清单文件中,找到您想要修复方向的活动声明,并添加以下代码,

android:screenOrientation="landscape"

为横向和纵向添加以下代码,

android:screenOrientation="portrait"