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适配方案适配后就不会出现问题,如若有问题可以向厂商反馈

你可能感兴趣的:(Android P刘海屏幕的屏幕适配)