android 刘海机型适配,Android全面屏刘海适配
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全面屏刘海适配相关推荐
- 苹果x css适配,CSS如何适配iPhone全面屏 CSS适配iPhone全面屏方法
本篇文章小编给大家分享一下CSS适配iPhone全面屏方法,通过文中代码详细介绍了适配方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 一.media query方式 / ...
- android刘海屏幕分辨率,Android全面屏刘海适配
maxAspectRatio 根据谷歌兼容性(CTS)标准要求,应用必须按以下方式中的任意一种,在AndroidManifest.xml中配置方可全屏显示,否则将以非全屏显示. 方式一:配置支持最大高 ...
- 【Android】【手机适配】Android自定义导航栏和全面屏适配方案
名词说明 状态栏:StatusBar,手机上方显示电量.时间的横条 导航栏:NavigationBar,手机下方显示虚拟按键的横条 标题栏:ActionBar,应用顶部显示标题的横条 全面屏:界面内容 ...
- 微信小程序 全面屏的适配
通过配置app.json的window属性的navigationStyle(导航栏样式,仅支持以下值: default 默认样式custom 自定义导航栏,只保留右上角胶囊按钮),改为custom模式 ...
- android 全面屏/刘海屏有效适配
黑底问题 手机厂商追求高用户体验,屏幕宽高比越做越高.17:9 19:10 18:9 18.5:9所谓全面屏. 原来一般主流手机1920*1080分辨率 16:9高宽比.如果没有单独去配置属性,会导致 ...
- Android适配全面屏/刘海屏
目前国内厂商已经推出的刘海屏Android手机有华为P20 pro, vivo X21,OPPO R15. 1.华为刘海屏的官方适配文档 https://devcenter-test.huawei.c ...
- Android 沉浸式状态栏和全面屏遇到刘海屏
文章目录 一.沉浸式状态栏 1.1 Android 4.4(API 19)- Android 5.0( API 21) 1.2 Android 5.0(API 21)以上版本 1.3 Android ...
- 全面屏/刘海屏及虚拟键适配--总结版
什么是刘海屏? 随着iPhone X发布,刘海屏手机大行其道 ,Google Android P版本的发布,也引入了刘海屏的概念 即将发布的Android p也提供了对刘海屏的支持.像 华为P20 p ...
- android车载支持格式,安卓全面屏适配攻略(适配超长车载主机)
前言 2017年9月,拜腾的横空出世,打破了车载主机界一直以来的沉寂,各大媒体也是不吝词藻的对它的超长中控屏进行了大肆的报道.这个时候作为同为车机供应者的诸位友商心里却不那么的平静,恨不得在发布会现场 ...
最新文章
- 为什么放弃治疗_百度百科
- 本周测试服务器角色转移系统仅开放转入,5月24日维护公告 角色转移系统全服放出...
- 使用 litmus 验证内存重排
- MYSQL中只知表名查询属于哪个SCHEMA
- java将xml中的标签名称转为小写_深入学习Java Web(七): JSTL标签库
- 图测试题部分总结.ing
- 如何快速学习一门新的编程语言?零基础开始学编程,就可以这样!
- java数组的用法_Java数组的使用
- 领悟非凡,只有西方人才能做出来的效果。。。不是技术,而是人文和胸怀
- 15个问题告诉你如何使用Java泛型
- python JEP安装
- can网络管理(osek中的NM)
- 判断conime.exe是不是病毒!
- 面向后端的前端技术分享
- 【网络安全学习实践】Windows系统密码破解防护及用户和组管理
- 《费马大定理》个人笔记整理
- python123m与n的数学运算_【Python数学面试题】面试问题:Python“… - 看准网
- 手机页面h5的简单demo
- 【Vue-仿照element-ui自己动手封装ui组件】—— alert、confirm 弹窗
- javascript实现小米搜索框