如何在手机上启用仅纵向和倒置纵向,手机上的“sensorPortrait”不起作用?

8
我无法理解为什么在清单文件中为一个活动设置“sensorPortrait”属性无法使该活动进入反向纵向模式。以下是我在清单文件中的设置:
    <activity
        android:name=".MainActivty"
        android:label="Testing"
        android:screenOrientation="sensorPortrait"
        android:windowSoftInputMode="stateHidden"
        android:configChanges="orientation">
    </activity>

上述代码对我来说无法在 Moto E (4.4.4) 或 Galaxy S3 (4.3) 上同时获取 reversePortrait 和 portrait,但我可以确认它可以在 Nexus 7 (5.0.1) 平板电脑上运行。我尝试了几个其他答案,但这似乎是最简单的一个,而且在“手机”上似乎不起作用,我是否遗漏了一些相关信息以使其正常工作?
我尝试了下面链接,它与我的问题非常相似,但没有任何有用的信息。 Activity in portrait or reverse portrait only 目前使用标志“sensorPortrait”,它的行为就像设置“portrait”一样,在手机上。

我在Xperia Z2和SDK版本21的清单中遇到了同样的问题。 即使启用了所有方向,我也从未获得过reversePortrait。你的targetSdkVersion和minSdkVersion是什么? - Radon8472
实际上,就像我之前在对ianhanniballake的评论中所说的那样,当我们将模式设置为“fullSensor”时,我们可以拥有反向肖像画。我只是在我的Xperia Z2上进行了测试,运行Lollipop 5.1.1,其中我将我的最小SDK设置为15,目标SDK设置为23。唯一的问题是,在全传感器模式下,它会在所有方向上旋转。 - king_below_my_lord
文档中说:“sensorPortrait:纵向方向,但根据设备传感器可以是普通或反向纵向”。但在“fullSensor”的注释中,“一些设备通常不使用反向纵向或反向横向,但这使得这些设备能够使用”。因此问题是,如何仅在通常不使用反向视图的设备上启用仅纵向和反向纵向。 - Radon8472
1个回答

3
如果您查看PhoneWindowManager源代码,您会发现它检查内部值config_allowAllRotations并使用该值来确定是否允许180度旋转(即手机上的反向肖像)。
由于默认值为false,这意味着在手机上禁用了反向肖像。您会注意到sw600dp值(即平板电脑)为true,因此您可以在平板设备上使用所有旋转,包括反向肖像。

2
你说的有道理,但是如果我设置android:screenOrientation="fullSensor",即使在手机上也会发生反向纵向。实际上,在该特定方向模式下,所有4个旋转都没有问题,那么你认为会发生什么,它是否忽略内部值? - king_below_my_lord

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接