刘海屏
刘海屏是指某些设备显示屏上的一个区域延伸到显示面,这样既能为用户提供全面屏体验,又能为设备正面的重要传感器留出空间。Android 在搭载 Android 9(API 级别 28)及更高版本的设备上正式支持刘海屏。请注意,设备制造商也可以选择在搭载 Android 8.1 或更低版本的设备上支持刘海屏。
为了确保一致性和应用兼容性,搭载 Android 9 的设备必须确保以下刘海行为:
①一条边缘最多只能包含一个刘海。
②一台设备不能有两个以上的刘海。
③设备的两条较长边缘上不能有刘海。
④在未设置特殊标志的竖屏模式下,状态栏的高度必须至少与刘海的高度持平。
⑤默认情况下,在全屏模式或横屏模式下,整个刘海区域必须显示黑边。
检测
如果不希望您的内容与刘海区域重叠,请确保您的内容不与状态栏和导航栏重叠,这样做一般就足够了。如果您要将内容呈现到刘海区域中,则可以使用 WindowInsets.getDisplayCutout() 来检索DisplayCutout 对象,该对象包含每个刘海区域的安全边衬区和边界框。您可以使用这些 API 来检查您的内容是否与刘海区域重叠,以便根据需要重新放置。
API提供窗口布局属性 layoutInDisplayCutoutMode 控制我们的内容如何呈现在刘海区域中。有三种显示模式
通过theme方式设置
在activity中设置
刘海屏处理方式
默认行为(全屏页面不可用刘海区域,非全屏页面可以进行使用)LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
默认情况下,在未设置特殊标志的竖屏模式下,在带刘海屏的设备上,状态栏的大小会调整为至少与刘海一样高,而您的内容会显示在下方区域。在横屏模式或全屏模式下,您的应用窗口会显示黑边,因此您的任何内容都不会显示在刘海区域中。
将内容呈现在短边刘海区域中(LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES,画面沉浸过去)
对于某些内容(如视频、照片、地图和游戏),呈现在刘海区域中是一种很好的方法,这样能够为用户提供沉浸感更强的全面屏体验。如果设置了 LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES,则在竖屏模式和横屏模式下,内容都会延伸到显示屏的短边上的刘海区域,而不管系统栏处于隐藏还是可见状态。请注意,窗口无法延伸到屏幕的长边上的刘海区域。使用此模式时,请确保没有重要内容与刘海区域重叠。
则不允许窗口与刘海区域重叠。(LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER)
PS:根据应用场景。可以自行选择需求进行适配。一般和沉浸式一起使用。
网友评论