Android P刘海屏幕的屏幕适配

Google 官方提供了三种模式用于刘海屏(cutout)的适配:

WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT

WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER

WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES

刘海屏模式的修改针对Activity,在一个Activity中修改并不影响其他的Activity,修改方法:

protected void setLayoutInDisplayCutoutMode(int layoutInDisplayCutoutMode) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {

WindowManager.LayoutParams lp = getWindow().getAttributes();

        lp.layoutInDisplayCutoutMode = layoutInDisplayCutoutMode;

        getWindow().setAttributes(lp);

    }

}

三种模式下内容区域渲染:

WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT:默认模式:

默认状态栏:纵屏不渲染到cutout区域,状态栏颜色;横屏不渲染到cutout区域,黑色

全屏:纵屏不渲染到cutout区域,黑色;横屏不渲染到cutout区域,黑色

沉浸式状态栏:纵屏渲染到cutout区域;横屏不渲染到cutout区域,黑色

WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER 模式:

默认状态栏:纵屏不渲染到cutout区域,黑色;横屏不渲染到cutout区域,黑色

全屏:纵屏不渲染到cutout区域,黑色;横屏不渲染到cutout区域,黑色

沉浸式状态栏:纵屏不渲染到cutout区域,黑色;横屏不渲染到cutout区域,黑色

WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES  模式:

默认状态栏:纵屏不渲染到cutout区域,状态栏颜色;横屏:状态栏渲染到cutout区域,内容部分不渲染到cutout区域

全屏:纵屏渲染到cutout区域;横屏渲染到cutout区域

沉浸式状态栏:纵屏渲染到cutout区域;横屏渲染到cutout区域

国内手机厂商对Android P的适配方案

华为: http://mini.eastday.com/bdmip/180411011257629.html#

小米:https://dev.mi.com/console/doc/detail?pId=1351

 vivo:https://dev.vivo.com.cn/documentCenter/doc/145

总之:以上品牌的手机按照google的Android P适配方案适配后就不会出现问题,如若有问题可以向厂商反馈

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Apple一直在引领设计的潮流,自从 iPhone X 发布之后,”刘海屏” 就一直存在争议,本以为是一个美丽的错...
    AmberSiYing阅读 1,218评论 0 0
  • 背景 自从iphone x发布后,各大厂商也发布了类似的刘海屏手机(“顶部屏幕凹槽设计”),开发者应该如何适配呢?...
    卓而不群_0137阅读 3,471评论 0 3
  • 背景 刘海屏指的是手机屏幕正上方由于追求极致边框而采用的一种手机解决方案。因形似刘海儿而得名。也有一些其他叫法:挖...
    _九卿_阅读 6,242评论 0 26
  • 随着iPhone X的发布,国内一些厂商也推出了刘海屏手机,所以我们的app也要提前做好适配。 1 什么是刘海屏?...
    宝马奔驰_xyz阅读 1,360评论 0 2
  • 爱的奉献 爱是什么?爱是得到,爱是索取……不然……不求回报,无私奉献的爱才是对爱最好的诠释。曾几何时无数次的想要放...
    他乡伊人阅读 167评论 0 0