上述两种屏幕都可以统称为刘海屏,不过对于右侧较小的刘海,业界一般称为水滴屏或美人尖。为便于说明,后文提到的「刘海屏」「刘海区」都同时指代上图两种屏幕。
刘海屏、水滴屏全面屏适配细节
当我们在谈屏幕适配时,我们具体谈什么呢?
- 适应更长的屏幕
- 防止内容被刘海遮挡
其中第一点是所有应用都需要适配的,对应下文的声明最大长宽比,而第二点,如果应用本身不需要全屏显示或使用沉浸式状态栏,是不需要适配的。
针对需要适配第二点的应用,需要获取刘海的位置和宽高,然后将显示内容避开即可。
声明最大长宽比
以前的普通屏长宽比为16:9,全面屏手机的屏幕长宽比增大了很多,如果不适配的话就会类似下面这样:
适配方式
适配方式有两种:
- 将targetSdkVersion版本设置到API 24及以上;
这个操作将会为<application>
标签隐式添加一个属性,android:resizeableActivity=“true”, 该属性的作用后面将详细说明。
- 在 标签中增加属性:android:resizeableActivity=“false”,同时在节点下增加一个meta-data标签:
原理说明
在 Android 7.0(API 级别 24)或更高版本的应用,android:resizeableActivity属性默认为true(对应适配方式1)。这个属性是控制多窗口显示的,决定当前的应用或者Activity是否支持多窗口。
可以在清单的<activity>
或 <application>
节点中设置该属性,启用或禁用多窗口显示,配置如下:
android:resizeableActivity=[“true” | “false”]
如果该属性设置为 true,Activity 将能以分屏和自由形状模式