android兼容oppo手机刘海屏解决方案

简介: 引用自OPPO官方文档,这里缩减了一些内容,选取重要内容,包括oppo沉浸式的兼容。 转载请标明出处: https://blog.

引用自OPPO官方文档,这里缩减了一些内容,选取重要内容,包括oppo沉浸式的兼容。
转载请标明出处:
https://blog.csdn.net/DJY1992/article/details/80688802
本文出自:【奥特曼超人的博客】

推荐:

目录:

1.机型

OPPO的刘海屏适配文档稍微比较简单点,首先认识一下OPPO推出的一款屏幕高宽比更大、带有刘海的凹形屏幕的手机,其屏幕规格如下:

安卓刘海屏奥特曼超人dujinyang

采用宽度为1080px, 高度为2280px的圆弧显示屏。 屏幕顶部凹形区域不能显示内容,宽度为324px, 高度为80px。

2. 如何识别凹形屏

本次凹形屏规格的机型型号:

  • PAAM00
  • PAAT00
  • PACM00
  • PACT00
  • CPH1831
  • CPH1833

上述机型的屏幕规格完全相同,不需分别做差异化处理,统一适配即可。

如何识别凹形屏:

context.getPackageManager().hasSystemFeature(“com.oppo.feature.screen.heteromorphism”)

返回 true为凹形屏 ,可识别OPPO的手机是否为凹形屏。

3. 应用适配布局说明

您在设计应用界面布局时,请确保布局填满屏幕,并且内容无论横屏或竖屏显示都不会被屏幕凹形槽遮蔽。

应用横屏全屏显示
奥特曼超人刘海屏米奇云

应用竖屏全屏显示
奥特曼超人刘海屏米奇云

4. 应用适配内容

应用完整的全面屏显示,将为用户带来极致的全屏效果体验,增强应用的用户粘性。

适配具体内容:

  1. 声明全屏显示(具体方法见附录)。
  2. 适配沉浸式状态栏,避免状态栏部分显示应用具体内容。
  3. 如果应用可横排显示,避免应用两侧的重要内容被遮挡。

    应用横屏全屏显示
    奥特曼超人dujinyang
    应用竖屏全屏显示
    android刘海屏oppo

5. 常见问题

1)PPT中介绍的凹形屏的规格是否固定的?以后其他机型是否会有变化?

公告针对上述机型手机,不针对后续机型。后续机型凹型屏的大小、尺寸、位置可能变化。

2)凹型屏是否有统一处理逻辑?

目前在设置 – 显示 – 应用全屏显示 – 凹形区域显示控制,里面有关闭凹形区域开关,用户可通过这个关闭凹形区域避免遮挡(原则可参考google android P 设计说明)。

3)后续是否会兼容Android P?

Google Android P 会有标准的API获取凹形屏,后续会按照标准API提供适配方案,并兼容老方案。

6. 如何适配全面屏手机

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

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

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

* 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”

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

详见官方文档:https://source.android.google.cn/compatibility/cdd?hl=zh-cn


7 兼容OPPO沉浸式

这里介绍通过设置窗口全屏Flag实现OPPO机型状态栏沉浸式方法:

Android5.0 以后的版本

Window window = activity.getWindow();
View decorView = window.getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);

Android4.4 及以前的版本设置方法:

Window window = activity.getWindow();
WindowManager.LayoutParams attributes = window.getAttributes();
attributes.flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
window.setAttributes(attributes);
相关文章
|
24天前
|
安全 搜索推荐 Android开发
Android vs. iOS:解锁智能手机操作系统的奥秘####
【10月更文挑战第21天】 在当今这个数字化时代,智能手机已成为我们生活中不可或缺的伙伴。本文旨在深入浅出地探讨两大主流操作系统——Android与iOS的核心差异、优势及未来趋势,帮助读者更好地理解这两个平台背后的技术哲学和用户体验设计。通过对比分析,揭示它们如何塑造了我们的数字生活方式,并展望未来可能的发展路径。无论您是技术爱好者还是普通用户,这篇文章都将带您走进一个充满创新与可能性的移动世界。 ####
43 3
|
1月前
|
Ubuntu Linux Android开发
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
本文介绍了如何在Android设备上安装Termux和AnLinux,并通过这些工具运行Ubuntu系统和桌面环境。
128 2
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
|
1月前
|
Web App开发 Android开发
利用firefox调试安卓手机端web
该教程详细介绍如何通过Firefox浏览器实现手机与电脑的远程调试。手机端需安装最新版Firefox,并按指定步骤设置完成;电脑端则需安装15版及以上Firefox。设置完成后,通过工具栏中的“远程调试”选项,输入手机IP地址即可连接。连接确认后,即可使用电脑端Firefox调试器调试手机上的Web信息。注意,调试前手机需提前打开目标网页。
69 2
|
27天前
|
Android开发 iOS开发 UED
安卓与iOS的较量:谁才是智能手机市场的王者?
本文将深入探讨安卓和iOS两大智能手机操作系统之间的竞争关系,分析它们各自的优势和劣势。通过对比两者在市场份额、用户体验、应用生态等方面的表现,我们将揭示出谁才是真正的市场领导者。无论你是安卓粉丝还是iOS忠实用户,这篇文章都将为你提供一些有趣的观点和见解。
|
3月前
|
Android开发
【Azure 环境】记录使用Notification Hub,安卓手机收不到Push通知时的错误,Error_Code 30602 or 30608
【Azure 环境】记录使用Notification Hub,安卓手机收不到Push通知时的错误,Error_Code 30602 or 30608
|
4月前
|
存储 移动开发 Android开发
使用kotlin Jetpack Compose框架开发安卓app, webview中h5如何访问手机存储上传文件
在Kotlin和Jetpack Compose中,集成WebView以支持HTML5页面访问手机存储及上传音频文件涉及关键步骤:1) 添加`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`权限,考虑Android 11的分区存储;2) 配置WebView允许JavaScript和文件访问,启用`javaScriptEnabled`、`allowFileAccess`等设置;3) HTML5页面使用`<input type="file">`让用户选择文件,利用File API;
|
3月前
|
Java Android开发 UED
安卓scheme_url调端:如果手机上多个app都注册了 http或者https 的 intent。 调端的时候,调起哪个app呢?
当多个Android应用注册了相同的URL Scheme(如http或https)时,系统会在尝试打开这类链接时展示一个选择对话框,让用户挑选偏好应用。若用户选择“始终”使用某个应用,则后续相同链接将直接由该应用处理,无需再次选择。本文以App A与App B为例,展示了如何在`AndroidManifest.xml`中配置对http与https的支持,并提供了从其他应用发起调用的示例代码。此外,还讨论了如何在系统设置中管理这些默认应用选择,以及建议开发者为避免冲突应注册更独特的Scheme。
|
7天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
9天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
|
11天前
|
XML 存储 Java
探索安卓开发之旅:从新手到专家
【10月更文挑战第35天】在数字化时代,安卓应用的开发成为了一个热门话题。本文旨在通过浅显易懂的语言,带领初学者了解安卓开发的基础知识,同时为有一定经验的开发者提供进阶技巧。我们将一起探讨如何从零开始构建第一个安卓应用,并逐步深入到性能优化和高级功能的实现。无论你是编程新手还是希望提升技能的开发者,这篇文章都将为你提供有价值的指导和灵感。