5分钟适配Android P和Android 8.0刘海屏,可能全网最全总结

前言

刘海屏兴起的原因就不说了,只能说17年是最差劲的一届智能机了,说多了都是泪。既然局面已经这样了,咱们就来聊聊怎么解决刘海屏带来的屏幕适配问题。Android上的刘海屏出现在8.0系统上,小米、华为、vivo、oppo、一加、锤子等都有自家刘海屏手机,但Google是在Android P上才对其进行了适配,那对于开发者,8.0的刘海屏手机怎么适配呢?Android P呢?不急,下面我会通俗易懂的讲讲。
 


什么时候会用到刘海?

如果你的应用需要全屏或者沉浸,那么就需要适配刘海。如果不在状态栏显示任何内容,这篇文章你就不用看了。下面第一张需要适配,第二张不需要适配。
 

需要适配

 

不需要适配


Android P刘海屏适配

新建一个Activity,设置成全屏模式,在P上如果没有适配刘海,手机顶部会出现黑条,效果如下图。
 

顶部出现黑条

如果适配了刘海,效果如下图。
 

适配刘海

适配代码

Window window = getWindow();
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);        window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 设置页面全屏显示
WindowManager.LayoutParams lp = window.getAttributes();
lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
// 设置页面延伸到刘海区显示
window.setAttributes(lp);

新建一个Activity,设置成”沉浸“模式,适配了刘海屏的效果如下图。
 

显示通知栏的刘海屏适配

代码如下
 

Window window = getWindow();   window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
//设置页面全屏显示
WindowManager.LayoutParams lp = window.getAttributes();
lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
//设置页面延伸到刘海区显示
window.setAttributes(lp);

Android 8.0刘海屏适配

8.0由于没有谷歌官方api支持,导致各大手机厂商适配方法不一样,适配起来比较麻烦,下面对比较大的国产厂商的适配方案列举如下。

1、华为:https://developer.huawei.com/consumer/cn/devservice/doc/50114
2、小米:https://dev.mi.com/console/doc/detail?pId=1293
3、vivo:https://dev.vivo.com.cn/documentCenter/doc/103
4、oppo:https://open.oppomobile.com/wiki/doc#id=10159
5、一加:没找到。。。有同学找到没?
6、锤子:https://resource.smartisan.com/resource/61263ed9599961d1191cc4381943b47a.pdf
7、三星:滚


总结

如果不想在刘海屏适配上花太多心思,就不要使用全屏或者沉浸全屏这种设置。一般使用到全屏沉浸的应用像地图、视频、广告页、列表还是需要适配的,8.0系统的刘海屏手机会在市场上存活几年的,所以要还是需要注意下的。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值