我如何禁用景观模式的一些观点在我的Android应用程序?


当前回答

在阅读这篇文章之前,我不知道AndroidManifest.xml文件开关,所以在我的应用程序中,我使用了这个代替:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Fixed portrait orientation

其他回答

<android . . . >
    . . .
    <manifest . . . >
        . . .
        <application>
            <activity
                android:name=".MyActivity"
                android:screenOrientation="portrait"
                android:configChanges="keyboardHidden|orientation">
            </activity>
        </application>
    </manifest>
</android>

如果你想禁用Android应用程序(或单个活动)的横向模式,你需要做的就是添加:

android:screenOrientation="portrait"到AndroidManifest.xml文件中的活动标签。

如:

<activity 
    android:name="YourActivityName"
    android:icon="@drawable/ic_launcher"
    android:label="Your App Name"
    android:screenOrientation="portrait">

另一种方法:程序化方法。

如果您希望以编程方式完成此操作,即使用Java代码。您可以在不希望以横向模式显示的活动的Java类中添加以下代码。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

如果你不想经历在每个活动清单条目中添加方向的麻烦,创建一个BaseActivity类(继承' activity '或'AppCompatActivity'),它将被你的应用程序的每个活动继承,而不是' activity '或'AppCompatActivity',只需在你的BaseActivity中添加以下代码段:

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

这里的很多答案都建议在AndroidManifest.xml文件中使用“portrait”。这似乎是一个很好的解决方案-但正如文档中所指出的那样,您正在挑出可能只有横屏的设备。你还强迫某些设备(在横屏下工作得最好)进入竖屏,而没有得到正确的方向。

我的建议是用“nosensor”代替。这将使设备使用其默认的首选方向,不会阻止谷歌Play上的任何购买/下载,并将确保传感器不会破坏你的游戏(在我的情况下是NDK)。

你应该在AndroidManifest.xml中修改android:screenOrientation="sensorPortrait