android 全面屏/刘海屏有效适配

黑底问题

手机厂商追求高用户体验,屏幕宽高比越做越高。17:9 19:10 18:9 18.5:9所谓全面屏。
原来一般主流手机1920*1080分辨率 16:9高宽比。如果没有单独去配置属性,会导致在超过17:9宽高比手机上,底部一大块黑底。
这里写图片描述

适配方案

  • 1920*1080 传统手机 ratio_float = 16/9 = 1.778 ;
  • 2248*1080 (例如小米8) ratio_float = 18/9 = 2 ;
  • 2960*1440 (三星s8,s9) ratio_float = 18.5/9 = 2.056;

1、设置最大支持的屏幕宽高比

在应用配置文件AndroidManifest.xml中显式声明支持的最大屏幕高宽比(maximum aspect ratio)。其中 ratio_float 为高宽比:基于主流全面屏屏幕比例,将ratio_float设置高于主流比即可适配一众全面屏手机。2.1或2.2

 <meta-data
            android:name="android.max_aspect"
            android:value="2.1" />

2、 设置targetSdkVersion的版本

targetSdkVersion<=23时,会不适配全面屏,而targetSdkVersion>23时候不会出现这种情况。

3.0设置android N -7.0的属性

清单文件application 中设置 android:resizeableActivity=”true”
分屏和自由形状模式中 Activity 的最小高度和最小宽度。 如果用户在分屏模式中移动分界线,使 Activity 尺寸低于指定的最小值,系统会将 Activity 裁剪为用户请求的尺寸。

—————— 刘海屏适配问题 ——————

刘海屏的适配,各大厂商也都有给出自己的适配方案,现在给出我自己项目中,简单有效的适配方法
先上图
这里写图片描述
这里写图片描述
我们适配方式就是给标题栏设置顶部的padding高度。正常情况,我们所有的标题栏是写在基类里的,在给标题布局的根部局设置顶部间距就好了。4.4以下的手机是没有刘海屏手机存在的,所以仅给4.4以上的单独设置

  public void setBarPadding(View view) {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
            view.setPadding(view.getPaddingLeft(), UIUtils.dip2px(8), view.getPaddingRight(), view.getPaddingBottom());
        } else {
            view.setPadding(view.getPaddingLeft(), getStatuBarHeight(), view.getPaddingRight(), view.getPaddingBottom());
        }
    }

猜你喜欢

转载自blog.csdn.net/zane_xiao/article/details/81781723