清单 screenOrientation 属性 与 setRequestedOrientation

Manifest screenOrientation property vs setRequestedOrientation

我正在尝试了解在我的清单文件中这样设置 screenOrientation 之间的区别

<activity android:name='.MainActivity' screenOrientation='portrait'/>

与在 onCreate 生命周期的一部分中这样做相比

`setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);`

据我了解,第一种方法将在纵向模式下创建活动,而不管创建时 phone 方向如何(这意味着 activity 将以纵向模式创建,即使您将 phone 保持横向),而第二个将在 phone 方向给定的配置中创建 activity 然后更改(因此,如果您将 phone 保持在Landscape position and create an activity,你会看到在landscape上创建的activity,然后重新配置自己为portrait mode)。

我说得对吗?如果我不是,谁能给我解释一下到底有什么区别?

你在清单中设置的是一种初始值,可以使用 setRequestedOrientation() 方法进行操作。

您可以通过实现一个非常简单的应用程序来测试您编写的内容。

基本上你会得到相同的结果。区别在于清单中定义的方向从一开始就生效,创建 activity.

而您可以调用 setRequestedOrientation() 方法根据条件或事件以编程方式设置它。例如,您可以使用 setRequestedOrientation() 方法在单击按钮时将方向从纵向更改为横向。或者通过传递参数 ActivityInfo.SCREEN_ORIENTATION_SENSOR.

使其依赖于传感器