3

Jelly Bean 4.3 (API 18) 添加了几个新的 screenOrientation 值。

http://developer.android.com/reference/android/R.attr.html#screenOrientation

http://developer.android.com/reference/android/content/pm/ActivityInfo.html#SCREEN_ORIENTATION_BEHIND

我首先想:“方向”和“旋转”之间有区别吗?还是文档只是使用了不一致的措辞?

然后:

未指定

没有指定偏好:让系统决定最佳方向。这将是下面的活动选择的方向,或者如果此活动是任务的底部,则用户的首选方向。如果用户通过设置基于传感器的设备旋转明确关闭基于传感器的方向,则将被忽略。如果不是默认情况下,将考虑基于传感器的方向,并且方向将根据用户旋转设备的方式而改变。对应于 SCREEN_ORIENTATION_UNSPECIFIED。

用户

使用用户当前首选的手机方向。对应于 SCREEN_ORIENTATION_USER。

全用户(新)

尊重用户基于传感器的旋转偏好,但如果启用了基于传感器的旋转,则无论设备通常会做什么,都允许屏幕在所有 4 个可能的方向上旋转(例如,某些设备通常不会使用 180 度旋转) . 对应于 SCREEN_ORIENTATION_FULL_USER。

有什么不同?在目前的实践中,如果在系统范围内启用了旋转,我相信这setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)是告诉活动基于传感器旋转的方法。那么有什么fulluser不同呢?

同样地,

无传感器

始终忽略方向传感器确定的方向:当用户移动设备时,显示屏不会旋转。对应于 SCREEN_ORIENTATION_NOSENSOR。

锁定(新)

屏幕被锁定为其当前旋转,无论是什么。对应于 SCREEN_ORIENTATION_LOCKED。

有什么区别吗?

4

2 回答 2

4

“方向”和“旋转”有区别吗?还是文档只是使用了不一致的措辞?

即使您将OrientationandRotation视为同义词(我认为大多数人也是如此,包括我在内),但差异在于它们各自的定义。哪里Orientation给你两个选择,Rotation给你四个。额外的两个选项将用于什么?那将取决于你。

假设你想出了一个方便的应用程序,其中包括一个闹钟、一个计算器、一个天气预报器和一个货币转换器。您可以为每个视图分配不同的旋转,并允许用户通过旋转设备在四个视图之间导航。

另一个(虚构的)示例可以是基于旋转角度显示不同小部件组的主屏幕。

我尝试了一些screenOrientation选项,这就是我发现的:

fullUser:坚持默认的 0 度旋转。

用户:允许的旋转值 0、90 和 270。

fullSensor:允许所有 4 个旋转值。

user未指定:与设置相同的行为

锁定且无传感器:卡在 0 度旋转

正如您从测试中看到的那样,关于每个screenOrientation值的作用并没有得到太多澄清。不知道为什么我无法重现资源页面上定义的效果。

于 2013-07-27T19:30:26.137 回答
-1

fullUser:启用自动旋转时允许的旋转值 0、90、180 和 270,否则为默认值。

用户:启用自动旋转时允许的旋转值 0、90 和 270,否则为默认值。但在某些平板电脑上,它也允许有 4 个方向......

@Vikram,当您使用 fullUser 只有 0 度时,我猜您使用的是设备 apilevel < 18。;)

于 2014-07-28T07:32:40.120 回答