问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

五分钟掌握Android P和Android 8.0刘海屏适配方案

创作时间:
作者:
@小白创作中心

五分钟掌握Android P和Android 8.0刘海屏适配方案

引用
CSDN
1.
https://blog.csdn.net/nerv2013/article/details/82110196

刘海屏的出现给Android应用开发带来了新的挑战,尤其是在屏幕适配方面。本文将详细介绍如何在Android P和Android 8.0系统中适配刘海屏,帮助开发者解决这一技术难题。

什么时候会用到刘海?

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


需要适配


不需要适配

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. 华为:华为开发者官网
  2. 小米:小米开发者官网
  3. vivo:vivo开发者官网
  4. oppo:OPPO开发者官网
  5. 一加:暂未找到相关文档
  6. 锤子:锤子科技开发者文档
  7. 三星:暂不支持

总结

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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号