android之刘海屏适配

1  适配Android刘海屏小结

一、沉浸式与非沉浸式来回切换页面适配

二、沉浸式页面适配

(非沉浸式页面,系统自动适配)

不进行任何适配的情况下,带有刘海屏的手机都会有一套基本一致的处理逻辑。

一、沉浸式与非沉浸式来回切换页面适配

阅读正文界面

1、 存在问题: 正文页面在阅读的时候是沉浸式的(无菜单,状态栏),    由于沉浸式的时候, 系统的策略是刘海旁边为黑色(屏幕高度此时不算刘海旁边区域高度), 点击正文空白区域, 显示菜单的时候(显示状态栏,这时候为非沉浸式,屏幕高度算刘海旁边区域高度), 导致屏幕高度老是变化, 阅读器sdk会重新对章节,按屏幕高度重新排版。 所以看书界面会经常显示加载中。

2、蜗牛阅读正文适配:  使用假状态栏(一直不显示真状态栏,一直为沉浸式, 高度不会变化)

3、云阅读解决:

使用了文漫工具类, 刘海检测Util (DisplayCutoutUtil  .  hasDisplayCutout()是否为刘海屏  ,. displayCutoutRect()获取刘海屏的刘海矩形区域)。

4、云阅读书籍正文策略:

先检测是否是刘海屏幕

1、如果不是刘海屏幕——> 不改变

2、如果是刘海屏幕  ——>

方案一:  简单方案( 很简单, 暂时使用这个方式)

a、 让状态栏长期显示 (反正不显示也是黑色的), 不设置getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)(全屏模式),  菜单切换也不动FLAG_FULLSCREEN

b、a步骤完成,发现正文顶上去了

调整MainView顶部的paddingtop 为 原来的  paddingtop + 刘海的区域的高度

方案二:  针对不同的手机,对其进行适配 (比较麻烦,暂时放弃)

已公布实现方案的厂商(适配方式基本是通过反射调用特有方法/获取系统属性来判断),包括华为、小米、OPPO、VIVO,官方的适配文档地址如下:

未公布刘海屏适配文档的厂商,只能等待这些机型升级到Android P之后通过 Google 官方的方式进行适配

华为:华为刘海屏手机安卓O版本适配指导

通过EMUI系统内提供的com.huawei.android.util.HwNotchSizeUtil来处理

小米:小米 MIUI Notch 屏 Android O 适配说明

通过MIUI系统属性ro.miui.notch来判断是否为刘海屏

OPPO:OPPO凹形屏适配说明

通过com.oppo.feature.screen.heteromorphism属性来判断是否为刘海屏

VIVO:VIVO全面屏应用适配指南

通过特有类android.util.FtFeature类来判断是否为刘海屏。

另外,也和蜗牛阅读一样,把底部的导航栏隐藏了

二、沉浸式页面适配

1、云阅读有声书播放界面是沉浸式的状态栏,

总体思路:刘海屏状态栏的高度其实和普通的都是一样, 所以只要给全面屏的页面设置一个paddingtop就可以实现,

写一个公共的头部布局在基类里用,给头布局设置一个ayout_marginTop。

1、 设置全屏,设置状态栏透明

2、获取到头布局  audio_player_title,  非刘海屏幕的时候离顶部,默认20dp

3:给头布局设置布局的paddingtop

非刘海屏幕——>不用处理

刘海屏幕——> 设置mtitleView 距离顶部为刘海区域的高度

原文地址:https://www.cnblogs.com/awkflf11/p/12559355.html

时间: 2024-08-30 05:13:46

android之刘海屏适配的相关文章

刘海屏时代来临,主流应用适配情况大调查

为了追求极致体验,有的手机屏幕正上方设置了一块儿形似刘海的区域,此类设计风格的手机被形象的统称为"刘海屏"机型. 目前,已有11家厂商相继发布了16款带有"刘海"设计的手机,Android P也已全面支持刘海屏机型. 为了保障用户能够在此类机型上有完美的使用体验,华为终端开放实验室选取国内TOP 400主流应用,对 "刘海屏"适配情况进行测试,速来围观吧! 一.应用不适配刘海屏将会产生什么后果? 1.应用有沉浸式状态栏页面时,会出现顶部内容被刘海

APP适配安卓手机刘海屏

如果你想允许全屏界面内容显示到刘海区域 ,只要在AndroidManifest.xml文件里配置如下代码即可: <!--允许绘制到oppo.vivo刘海屏机型的刘海区域 --> <meta-data android:name="android.max_aspect" android:value="2.2" /> <!--适配华为(huawei)刘海屏--> <meta-data android:name="andr

Android 多屏适配解决方案

1.主流手机必要测量的参数(通过具体的方法,测量出,需要测试手机的 下面的这些参数,我们主要使用的只是 screenwidth  这个参数,其他参数只是帮助我们更好的理解 屏幕适配) DisplayMetrics metric = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels;  // 屏幕宽度(像素)

Android P的APP适配总结,让你快人一步

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由QQ音乐技术团队发表于云+社区专栏 上篇:Android P 行为变更适配 Android P 这次有很多行为变更,其中不乏一些需要亟需适配的变更. 一.全面屏检测 在 Android 8.0 时代各个手机厂商就开始发布自己的全面屏手机,但是此时 Android 官方并未支持到该功能,所以各个厂商都各自实现了一套全面屏判断逻辑,对于开发者来说甚是麻烦.终于在 Android P 里官方收归了该功能的判断逻辑,Android P 和

移动端多屏适配方案

原文:http://www.cocoachina.com/webapp/20150715/12585.html?utm_source=tuicool 背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 1)首先,选取一款手机的屏幕宽高作为基准(以前是iPhone4的320×480,现在更多的是iphone6的375×667).

移动端高清、多屏适配方案

移动端高清.多屏适配方案 背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 首先,选取一款手机的屏幕宽高作为基准(以前是iphone4的320×480,现在更多的是iphone6的375×667). 对于retina屏幕(如: dpr=2),为了达到高清效果,视觉稿的画布大小会是基准的2倍,也就是说像素点个数是原来的4倍(对i

移动端H5页面高清多屏适配方案

背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 1)首先,选取一款手机的屏幕宽高作为基准(以前是iPhone4的320×480,现在更多的是iphone6的375×667). 2)对于retina屏幕(如: dpr=2),为了达到高清效果,视觉稿的画布大小会是基准的2倍,也就是说像素点个数是原来的4倍(对iphone6而言:

移动端,多屏幕尺寸高清屏retina屏适配的解决方案

移动端高清.多屏适配方案 背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 首先,选取一款手机的屏幕宽高作为基准(以前是iphone4的320×480,现在更多的是iphone6的375×667). 对于retina屏幕(如: dpr=2),为了达到高清效果,视觉稿的画布大小会是基准的2倍,也就是说像素点个数是原来的4倍(对i

解惑好文:移动端H5页面高清多屏适配方案 (转)

转自:http://mobile.51cto.com/web-484304.htm https://github.com/amfe/lib-flexible/blob/master/src/makegrid.js https://segmentfault.com/a/1190000006839117 对于retina屏幕(如: dpr=2),为了达到高清效果,视觉稿的画布大小会是基准的2倍,也就是说像素点个数是原来的4倍(对iphone6而言:原先的375×667,就会变成750×1334).