Android刘海屏适配

刘海屏幕的适配,在全面屏设置下,顶部有刘海的区域,有的会导致刘海把标题栏等内容遮盖如下图,这是美团的统一版本在小米和华为上的适配,可以看到小米的未遮挡内容,但在华为设备上,明显刘海遮住了一部分内容,目前手里只有这两台设备,所以没有更多机型测试,不过根据上线APP反馈,目前这个方法可以满足。此博文为笔记内容,所以内容不多


Android刘海屏适配_第1张图片
lh1.jpg

Android刘海屏适配_第2张图片
lh2.jpg

如果统一留出固定的高度,会在不同设备上造成不同的效果,现在使用动态计算顶部状态栏高度然后预留高度,防止被异形屏遮挡情况,使用之后的效果如下图


Android刘海屏适配_第3张图片
lh3.jpg

Android刘海屏适配_第4张图片
lh4.jpg

方法及使用

setStatusBarHeight方法

public static void setStatusBarHeight(Activity activity, View view) {
        int bar_height =getStatusBarHeight(activity);
        LinearLayout.LayoutParams layoutParams;
        layoutParams = (LinearLayout.LayoutParams) view.getLayoutParams();
        layoutParams.height = bar_height - 12;
        view.setLayoutParams(layoutParams);
    }
 public static int getStatusBarHeight(Context context) {
        int result = 0;
        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            result = context.getResources().getDimensionPixelSize(resourceId);
        }
        return result;
    }

使用方法,在布局上设置一个占位条,需要适配的引用进来,因为有些布局是不用设置的



    
    

调用设置

 @BindView(R.id.v_include_status_bar_height_dynamic)
    View v_include_status_bar_height_dynamic;

 Tool.setStatusBarHeight(MainActivity.this, v_include_status_bar_height_dynamic);

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