前言
刘海屏兴起的原因就不说了,只能说17年是最差劲的一届智能机了,说多了都是泪。既然局面已经这样了,咱们就来聊聊怎么解决刘海屏带来的屏幕适配问题。Android上的刘海屏出现在8.0系统上,小米、华为、vivo、oppo、一加、锤子等都有自家刘海屏手机,但Google是在Android P上才对其进行了适配,那对于开发者,8.0的刘海屏手机怎么适配呢?Android P呢?不急,下面我会通俗易懂的讲讲。
什么时候会用到刘海?
如果你的应用需要全屏或者沉浸,那么就需要适配刘海。如果不在状态栏显示任何内容,这篇文章你就不用看了。下面第一张需要适配,第二张不需要适配。
![](https://i-blog.csdnimg.cn/blog_migrate/65a561b9594a80c831978c25ffebdc4c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/a945bf9bd5259caabd61cdc2c6d14b18.jpeg)
Android P刘海屏适配
新建一个Activity,设置成全屏模式,在P上如果没有适配刘海,手机顶部会出现黑条,效果如下图。
![](https://i-blog.csdnimg.cn/blog_migrate/ce0bb55c10fa2dbb7b7bd8dac13787b7.png)
如果适配了刘海,效果如下图。
![](https://i-blog.csdnimg.cn/blog_migrate/5529e4b9c2fd0280423f0bc34bf1e615.png)
适配代码
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,设置成”沉浸“模式,适配了刘海屏的效果如下图。
![](https://i-blog.csdnimg.cn/blog_migrate/9e9b2929da75dc850f4196b3a2f6245a.png)
代码如下
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系统的刘海屏手机会在市场上存活几年的,所以要还是需要注意下的。