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


当前回答

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

其他回答

只需在你的清单中添加这一行:

android:screenOrientation="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>

只需在活动标记中添加此属性。

 android:screenOrientation="portrait"

在Kotlin中,同样可以使用下面的代码以编程方式实现:

requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT

如果你的活动与第一个设备朝向状态相关,在onCreate方法中获取当前设备朝向,然后永远修复它:

int deviceRotation = ((WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();

if(deviceRotation == Surface.ROTATION_0) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
else if(deviceRotation == Surface.ROTATION_180)
{
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
}
else if(deviceRotation == Surface.ROTATION_90)
{
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
else if(deviceRotation == Surface.ROTATION_270)
{
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}

在oncreate()方法中添加一个类:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);