如何在 Android 中禁用横向模式?

如何为 Android 应用程序中的某些视图禁用横向模式?

答案

<activity android:name=".SomeActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait" />
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);     //  Fixed Portrait orientation
<activity android:name=".yourActivity"
    ....
    android:screenOrientation="portrait" />
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

这里有很多答案建议您在 AndroidManifest.xml 文件中使用"portrait" 。这似乎是一个不错的解决方案 - 但正如文档中所述,您正在挑选出可能只有横向设备。您还将迫使某些设备(在横向情况下最有效)进入纵向,而无法获得正确的方向。

我的建议是改用"nosensor" 。这将使设备使用其默认的首选方向,不会阻止在 Google Play 上的任何购买 / 下载,并确保传感器不会弄乱您的游戏(以我的情况为 NDK)。

如果您需要用户设置,

那么我建议setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

您可以从设置菜单更改设置。

我需要这样做是因为我的计时器必须与屏幕上的内容相对应,并且旋转屏幕会破坏当前的活动。

<manifest
    package="com.example.speedtest"
    android:versionCode="1"
    android:versionName="1.0" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >


        <activity
            android:name="ComparisionActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

    </application>

</manifest>
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
android:screenOrientation="portrait"

您应该在 AndroidManifest.xml 中更改android:screenOrientation="sensorPortrait"

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    // rest of your code......
}