在 Android 8.0 中,用户可以通过“快捷设置”图块或“显示”设置,在自动屏幕旋转模式和纵向旋转模式之间切换。在 Android 9 中,我们更新了纵向旋转模式,通过固定当前屏幕旋转方向来避免发生意外旋转(即使设备位置发生变化)。用户可以根据需要手动触发旋转,只需按一下导航栏中的新按钮即可。我们将纵向模式重命名为“旋转锁定”,它会在自动屏幕旋转模式关闭时启用。自动屏幕旋转模式没有任何变化。
当设备处于旋转锁定模式时,用户可以将其屏幕锁定为顶层可见 Activity 支持的任何旋转方式(受当前系统限制约束)。如果顶层 Activity 可在自动屏幕旋转模式下以多种旋转方向呈现,则旋转锁定模式下应提供相同的选项(根据 screenOrientation 设置,也允许存在一些例外情况)。
旋转锁定模式的工作原理是:当设备旋转方向发生变化时,在导航栏中显示一个按钮。为此,即使自动屏幕旋转模式处于关闭状态,设备的屏幕方向传感器也必须一直保持启用状态。点按此按钮即相当于设定用户旋转方向偏好设置 (Settings.System.USER_ROTATION)。WindowManager 会根据此偏好设置以及有关顶层 Activity 和系统状态的其他详细信息来改变系统的旋转方向。移动到另一个 Activity 时,为了确定以何种旋转方向呈现系统,WindowManager 会继续参考用户的旋转方向偏好设置。
图 1. 启用“在主屏幕按钮上向上滑动”手势后的旋转建议按钮
在多个 Activity 之间移动时