Android适配全面屏/刘海屏

news/2024/11/16 10:36:05/

目前国内厂商已经推出的刘海屏Android手机有华为P20 pro, vivo X21,OPPO R15。

1.华为刘海屏的官方适配文档 

https://devcenter-test.huawei.com/consumer/cn/devservice/doc/50114

2.oppo刘海屏官方文档:

https://open.oppomobile.com/service/message/detail?id=61876


3.vivo刘海屏官方文档

https://dev.vivo.com.cn/doc/document/info?id=103


vivo 和 OPPO官网仅仅给出了适配指导,没有给出具体方案,简单总结为:

如有是具有刘海屏的手机,竖屏显示状态栏,横屏不要在危险区显示重要信息或者设置点击事件

4.google官方刘海屏适配方案

google从Android P开始为刘海屏提供支持,目前提供了一个类和三种模式:

一个类

The new DisplayCutout class lets you find out the location and shape of the non-functional areas where content shouldn't be displayed. To determine the existence and placement of these cutout areas, use thegetDisplayCutout() method

就是说可以用DisplayCutout这个类找出刘海(cutout)的位置和形状,调用getDisplayCutout()这个方法可以获取刘海(cutout)的位置和区域

所以我们可用这个类判断是否有刘海的存在以及刘海的位置

DisplayCutout cutout = mContext.getDisplayCutout();

三种模式

A new window layout attribute, layoutInDisplayCutoutMode, allows your app to lay out its content around a device's cutouts. You can set this attribute to one of the following values:

  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT

  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES

  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER

layoutInDisplayCutoutMode值说明:

LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT:默认情况下,全屏窗口不会使用到刘海区域,非全屏窗口可正常使用刘海区域

LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS:窗口声明使用刘海区域

LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER:窗口声明不使用刘海区域

适配方案:
我们可以设置是否允许window扩展到刘海区:

WindowManager.LayoutParams lp =getWindow().getAttributes();
lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
getWindow().setAttributes(lp);

例如一个有状态栏的页面, 我们可以这样适配:
DisplayCutout cutout = getDisplayCutout();
if(cutout != null){WindowManager.LayoutParams lp =getWindow().getAttributes();  lp.layoutInDisplayCutoutMode=WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;  getWindow().setAttributes(lp);
}


需要注意的是:谷歌提供的刘海屏适配方案,要求应用必须适配到P版本才可使用。


http://www.ppmy.cn/news/192220.html

相关文章

浅谈Maven依赖冲突与依赖管理

目录 什么是依赖冲突 为什么会产生冲突 依赖冲突的解决和避免 Maven的仲裁机制

网络安全真的那么好吗?

当你开始在网上搜索关于网络安全的学习资料,常常会陷入自我怀疑:尝试自学后能使用工具进行简单的扫描和挖洞,但总感觉后期学习很难有突破,不知道是哪里出现问题…于是又不得不推倒重来。 了解网络安全,首先要搞清楚下…

django-vue-admin使用

一、源码地址 注意,一定要使用这个地址。(使用其他地址下载下来的感觉代码缺失,踩了大坑) django-vue-admin: 基于RBAC模型的权限控制的一整套基础开发平台,前后端分离,后端采用 djangodjango-rest-frame…

无线鼠标好用吗

无线鼠标最大的优势就是可以距离电脑更远,实现较远地方操作,适合家用HTPC用户以及追求极致的无线体验用户。比起有线键鼠左一条线,右一条线,可以保证电脑桌面的简洁,省掉了线路连接的杂乱。如果是商旅办公人士经常需要…

哪个牌子的蓝牙耳机好?防水蓝牙耳机品牌

随着人们物质生活水平的提高,人们总是吃一些高热量商品,身体也随着发福,这时侯就会开始运动,在刚开始运动的时侯总是容易想着放弃,这时侯就需要音乐来帮助他忘记放弃这件事情,然而运动总是会产生汗水&#…

蓝牙耳机什么牌子好?高性价比蓝牙耳机品牌推荐

最近看了网上很多朋友对于蓝牙耳机挑选这一项事情很是头疼,因为选购蓝牙耳机并不是只需要看外观就行,也需要综合配置参数、以及价格等方面来决定要不要入手,如果光是看外表就直接买了的话,很容易买回来不如意,这种用又…

运动无线蓝牙耳机哪个品牌好、蓝牙运动耳机排行榜10强

科学研究表明,运动的时候听听音乐能够提高运动效果,那么选择一款运动耳机就尤为重要,一副优秀的运动耳机是必不可少的装备,但是,并非所有耳机都是为运动而设计的。有些更适合在办公室,玩电子游戏或日常使用。接下来,我…

专业运动耳机哪个牌子好、专业运动耳机推荐

近些年,户外运动兴起,运动耳机迎来爆发增长,拒绝运动乏味,追求健康运动方式,已经成为当下年轻人的共同诉求。跑步骑行听音乐,已经是运动爱好者再熟悉不过的操作,很多人在运动中离不开音乐的节奏…