Android刘海屏、水滴屏全面屏最佳适配方案(2)

原理说明

这里涉及到的知识点是android:resizeableActivity属性。

在 Android 7.0(API 级别 24)或更高版本的应用,android:resizeableActivity属性默认为true(对应适配方式1)。这个属性是控制多窗口显示的,决定当前的应用或者Activity是否支持多窗口。

多窗口支持

在清单的<activity><application>节点中设置该属性,启用或禁用多窗口显示:

android:resizeableActivity=[“true” | “false”]

如果该属性设置为 true,Activity 将能以分屏和自由形状模式启动。 如果此属性设置为 false,Activity 将不支持多窗口模式。 如果该值为 false,且用户尝试在多窗口模式下启动 Activity,该 Activity 将全屏显示。

适配方式2即为设置屏幕的最大长宽比,这是官方提供的设置方式。

如果设置了最大长宽比,必须android:resizeableActivity="false"。 否则最大长宽比没有任何作用。

适配刘海屏

Android9.0及以上适配

Android P(9.0)开始,官方提供了适配异形屏的方式。

Support display cutouts

通过全新的 DisplayCutout 类,可以确定非功能区域的位置和形状,这些区域不应显示内容。 要确定这些凹口屏幕区域是否存在及其位置,请使用 getDisplayCutout() 函数。

  1. 全新的窗口布局属性 layoutInDisplayCutoutMode 让您的应用可以为设备凹口屏幕周围的内容进行布局。 您可以将此属性设为下列值之一:
  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER

默认值是LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT,刘海区域不会显示内容,需要将值设置为LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES

  1. 您可以按如下方法在任何运行 Android P 的设备或模拟器上模拟屏幕缺口:

  2. 启用开发者选项。

  3. 在 Developer options 屏幕中,向下滚动至 Drawing 部分并选择 Simulate a display with a cutout。

  4. 选择凹口屏幕的大小。

  5. 适配参考:

// 延伸显示区域到刘海
WindowManager.LayoutParams lp = window.getAttributes();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值