我尝试使用以下代码锁定屏幕方向:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
虽然显示保持纵向方向,但活动仍然会被重新创建。有什么解决方法吗?
如何锁定应用程序的方向,以便在方向更改时不重新创建活动?
我尝试使用以下代码锁定屏幕方向:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
虽然显示保持纵向方向,但活动仍然会被重新创建。有什么解决方法吗?
如何锁定应用程序的方向,以便在方向更改时不重新创建活动?
首先,如果可能的话请不要使用 setRequestedOrientation()
方法。相反,应该在你的<activity>
清单元素中使用 android:screenOrientation
属性。
其次,你还需要在<activity>
的清单元素中添加 android:configChanges="keyboardHidden|orientation"
属性,以防止销毁和重建周期。
<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>
2.- 将以下代码添加到您的Java活动文件(例如:"MainActivity.java")的onCreate方法中:
super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
它应该长得像这样:
protected void onCreate(Bundle savedInstanceState) {
super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);}