Android 应用程序方向(横向或纵向)如何锁定?

Android 应用程序方向(横向或纵向)如何锁定?,android,screen-orientation,Android,Screen Orientation,我尝试使用以下方法冻结方向: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 尽管显示保持纵向,但仍会重新创建活动。有什么办法解决这个问题吗 如何锁定应用程序的方向,以便在方向更改时不会重新创建活动?首先,如果可以避免,请不要使用setRequestedOrientation()。在清单元素中使用android:screenOrientation属性 其次,您还需要在清单元素中使用android:config

我尝试使用以下方法冻结方向:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
尽管显示保持纵向,但仍会重新创建活动。有什么办法解决这个问题吗


如何锁定应用程序的方向,以便在方向更改时不会重新创建活动?

首先,如果可以避免,请不要使用
setRequestedOrientation()
。在
清单元素中使用
android:screenOrientation
属性


其次,您还需要在清单元素中使用android:configChanges=“keyboardHidden | orientation”,以防止销毁/重新创建循环。

最好的解决方案是使用保存的实例。
如果您正在锁定屏幕方向,则表示您正在根据您设置的约束强制用户使用应用程序。因此,请始终使用onSaveInstanceState。阅读此链接:

有关纵向方向的AndroidManifest.xml活动部分的更具体示例:

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:configChanges="keyboardHidden|orientation|screenSize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

其中,
android:screenOrientation
设置初始方向,
android:configChanges
在屏幕更改时无效触发相应生命周期方法的事件。

尝试以下操作:

1.-在AndroidManifest.xml中设置所需的屏幕方向

android:screenOrientation="portrait|landscape"
应该是这样的:

    <application
    android:allowBackup="true"
    android:icon="~icon path~"
    android:label="~name~"
    android:supportsRtl="true"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme">
    </application>
protected void onCreate(Bundle savedInstanceState) {
    super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);}
应该是这样的:

    <application
    android:allowBackup="true"
    android:icon="~icon path~"
    android:label="~name~"
    android:supportsRtl="true"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme">
    </application>
protected void onCreate(Bundle savedInstanceState) {
    super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);}
现在,即使设备中的屏幕旋转已打开,屏幕也不会移动