maxAspectRatio

根据谷歌兼容性(CTS)标准要求,应用必须按以下方式中的任意一种,在AndroidManifest.xml中配置方可全屏显示,否则将以非全屏显示。

方式一:配置支持最大高宽比

*

* android:maxAspectRatio="ratio_float" (API LEVEL 26)

说明:以上两种接口可以二选一,ratio_float = 屏幕高 / 屏幕宽 (如oppo新机型屏幕分辨率为2280 x 1080, ratio_float = 2280 / 1080 = 2.11,建议设置 ratio_float为2.2或者更大)

方式二:支持分屏,注意验证分屏下界面兼容性

android:resizeableActivity="true"

建议采用方式二适配支持全面屏。

重要提醒

如果应用要支持分屏功能,则直接采用方式二,既支持了分屏,又适配和兼容了全面屏;

如果应用不支持分屏功能,设置了android:resizeableActivity="false" ,则必须采用方式一来适配全面屏,否则会出现如下问题:

全面屏不适配出现的问题

底部虚拟导航栏可能会透明或者是黑色的,原因是因为app的布局最大比例不够,不能够自动适配,如下图:

图1.jpg

所以当视频播放器全屏的时候,会看有右边圈出的部分有间隔,无法铺满全屏

图2.jpg

如果代码中设置之后,则能自动铺满全屏,不会透明或者预留间距:

android:name="android.max_aspect"

android:value="2.2" />

看如下效果图:

sssda.jpg

sssssss.jpg

Android P全面屏适配

// 谷歌官方提供的默认适配刘海屏

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

lp.layoutInDisplayCutoutMode=WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;

getWindow().setAttributes(lp);

// 窗口声明使用刘海区域

public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS = 1;

// 默认情况下,全屏窗口不会使用到刘海区域,非全屏窗口可正常使用刘海区域

public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT = 0;

// 声明不使用刘海区域

public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER = 2;

Android P获取刘海高度

刘海屏的凹槽,就在屏幕的中间,所以只有getSafeInsetTop()方法返回的结果,是我们需要的,其他的正常返回0

class WindowInsets {

DisplayCutout getDisplayCutout();

}

class DisplayCutout {

int getSafeInsetLeft();

int getSafeInsetTop();

int getSafeInsetRight();

int getSafeInsetBottom();

Region getBounds();

}

华为手机适配

//判断是否是华为刘海屏

public static boolean isHuaweiScreenHasGroove(Context context) {

boolean ret = false;

try {

ClassLoader cl = context.getClassLoader();

Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil");

Method get = HwNotchSizeUtil.getMethod("hasNotchInScreen");

ret = (boolean) get.invoke(HwNotchSizeUtil);

} catch (Exception e) {

} finally {

return ret;

}

}

//获取华为刘海的高宽

public static int[] getHuaweiNotchSize(Context context) {

int[] ret = new int[]{0, 0};

try {

ClassLoader cl = context.getClassLoader();

Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil");

Method get = HwNotchSizeUtil.getMethod("getNotchSize");

ret = (int[]) get.invoke(HwNotchSizeUtil);

} catch (Exception e) {

} finally {

return ret;

}

}

Oppo刘海适配

//判断手机是否有刘海

public static boolean isOppoScreenHasGroove(Context context) {

boolean isHasGroove = context.getPackageManager().hasSystemFeature("com.oppo.feature.screen.heteromorphism");

return isHasGroove;

}

刘海高度固定:80px

VIVO手机刘海适配

//判断是否是voio刘海屏

public static final int NOTCH_IN_SCREEN_VOIO = 0x00000020;//是否有凹槽

public static final int ROUNDED_IN_SCREEN_VOIO = 0x00000008;//是否有圆角

public static boolean isVoioScreenHasGroove(Context context) {

boolean ret = false;

try {

ClassLoader cl = context.getClassLoader();

Class FtFeature = cl.loadClass("com.util.FtFeature");

Method get = FtFeature.getMethod("isFeatureSupport", int.class);

ret = (boolean) get.invoke(FtFeature, NOTCH_IN_SCREEN_VOIO);

} catch (Exception e) {

} finally {

return ret;

}

}

四周圆角高度:25dp

刘海高度:27dp

状态栏高度:32dp

android 刘海机型适配,Android全面屏刘海适配相关推荐

  1. 苹果x css适配,CSS如何适配iPhone全面屏 CSS适配iPhone全面屏方法

    本篇文章小编给大家分享一下CSS适配iPhone全面屏方法,通过文中代码详细介绍了适配方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 一.media query方式 / ...

  2. android刘海屏幕分辨率,Android全面屏刘海适配

    maxAspectRatio 根据谷歌兼容性(CTS)标准要求,应用必须按以下方式中的任意一种,在AndroidManifest.xml中配置方可全屏显示,否则将以非全屏显示. 方式一:配置支持最大高 ...

  3. 【Android】【手机适配】Android自定义导航栏和全面屏适配方案

    名词说明 状态栏:StatusBar,手机上方显示电量.时间的横条 导航栏:NavigationBar,手机下方显示虚拟按键的横条 标题栏:ActionBar,应用顶部显示标题的横条 全面屏:界面内容 ...

  4. 微信小程序 全面屏的适配

    通过配置app.json的window属性的navigationStyle(导航栏样式,仅支持以下值: default 默认样式custom 自定义导航栏,只保留右上角胶囊按钮),改为custom模式 ...

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

    黑底问题 手机厂商追求高用户体验,屏幕宽高比越做越高.17:9 19:10 18:9 18.5:9所谓全面屏. 原来一般主流手机1920*1080分辨率 16:9高宽比.如果没有单独去配置属性,会导致 ...

  6. Android适配全面屏/刘海屏

    目前国内厂商已经推出的刘海屏Android手机有华为P20 pro, vivo X21,OPPO R15. 1.华为刘海屏的官方适配文档 https://devcenter-test.huawei.c ...

  7. Android 沉浸式状态栏和全面屏遇到刘海屏

    文章目录 一.沉浸式状态栏 1.1 Android 4.4(API 19)- Android 5.0( API 21) 1.2 Android 5.0(API 21)以上版本 1.3 Android ...

  8. 全面屏/刘海屏及虚拟键适配--总结版

    什么是刘海屏? 随着iPhone X发布,刘海屏手机大行其道 ,Google Android P版本的发布,也引入了刘海屏的概念 即将发布的Android p也提供了对刘海屏的支持.像 华为P20 p ...

  9. android车载支持格式,安卓全面屏适配攻略(适配超长车载主机)

    前言 2017年9月,拜腾的横空出世,打破了车载主机界一直以来的沉寂,各大媒体也是不吝词藻的对它的超长中控屏进行了大肆的报道.这个时候作为同为车机供应者的诸位友商心里却不那么的平静,恨不得在发布会现场 ...

最新文章

  1. 为什么放弃治疗_百度百科
  2. 本周测试服务器角色转移系统仅开放转入,5月24日维护公告 角色转移系统全服放出...
  3. 使用 litmus 验证内存重排
  4. MYSQL中只知表名查询属于哪个SCHEMA
  5. java将xml中的标签名称转为小写_深入学习Java Web(七): JSTL标签库
  6. 图测试题部分总结.ing
  7. 如何快速学习一门新的编程语言?零基础开始学编程,就可以这样!
  8. java数组的用法_Java数组的使用
  9. 领悟非凡,只有西方人才能做出来的效果。。。不是技术,而是人文和胸怀
  10. 15个问题告诉你如何使用Java泛型
  11. python JEP安装
  12. can网络管理(osek中的NM)
  13. 判断conime.exe是不是病毒!
  14. 面向后端的前端技术分享
  15. 【网络安全学习实践】Windows系统密码破解防护及用户和组管理
  16. 《费马大定理》个人笔记整理
  17. python123m与n的数学运算_【Python数学面试题】面试问题:Python“… - 看准网
  18. 手机页面h5的简单demo
  19. 【Vue-仿照element-ui自己动手封装ui组件】—— alert、confirm 弹窗
  20. javascript实现小米搜索框

热门文章

  1. armv8 ARM64 AARCH64
  2. 阻焊层和助焊层的理解
  3. 【Java面试】什么是字节码?采用字节码的好处是什么?
  4. PCLVisualizer
  5. Origin—对数据进行分类描述统计,包括总数,均值,标准差,总和,最小、最大值,中值。
  6. 中外数学教学名著与数学思想
  7. 伺服驱动器原理学习笔记
  8. [Web3.0]什么是Web3.0/时代
  9. 【latex】LaTeX调整图片大小的方法;自动调整合适的大小
  10. tomcat--catalina