Android手机 全面屏(18:9屏幕)适配指南

简介: Android手机 全面屏(18:9屏幕)适配指南

从小米MIX 1发布以来,越来越多所谓“全面屏”手机发布,如三星S8,小米MIX2,VIVO X20,Google Pixel2等等…2017年下半年开始,“全面屏”将大范围覆盖,低至千元机水平,就像当年手机屏幕从720P到1080P过渡一样,历史车轮,滚滚向前,不可阻挡!


暂且不论所谓全面屏如何定义,作为Android开发者更多关心的是屏幕适配的兼容性。全面屏刚出来的时候并不可怕,可怕的是后来出现了一些异形全面屏——把屏幕挖掉一块的那种异类!全面屏手机大致思路都是压缩额头与下巴,屏幕比例从传统的16:9变为18:9,提高屏占比以及屏幕内的虚拟导航键,本文将简要介绍全面屏适配中一些需要注意的东西以及解决方案。


适配指南

一、声明最大屏幕高宽比

1.1:在应用配置文件AndroidManifest.xml中显式声明支持的最大屏幕高宽比(maximum aspect ratio)


其中 ratio_float 为高宽比:

传统屏幕:ratio_float = 16/9 = 1.778 ;

三星S8屏幕:ratio_float = 18.5/9 = 2.056。

鉴于目前全面屏屏幕比例,将ratio_float设置为2.1即可适配一众全面屏手机。


<meta-data

 android:name="android.max_aspect"

 android:value="ratio_float" />

1

2

3

然而有一点需要注意的是,在Android 7.0以上Google默认支持了分屏模式,即Manifest文件中配置Activity的android:resizeableActivity默认属性为true,在这种情况下并不需要配置Maximum Aspect Ratio即可自动适配全面屏。如果由于某些原因(UI适配等)禁止了分屏模式,这个时候就要注意了!负责将出现上下黑条的显示效果,奇丑无比!Screens Support 官方文档


1.2.高版本解决方案

在Android 7.0以上Google默认支持了分屏模式,即Manifest文件中配置Activity的android:resizeableActivity默认属性为true,在这种情况下并不需要配置Maximum Aspect Ratio即可自动适配全面屏。如果由于某些原因(UI适配等)禁止了分屏模式,这个时候就要注意了!负责将出现上下黑条的显示效果,奇丑无比!


二、启动页适配

在做启动优化,解决冷启动白屏的时候,我们往往会为要启动的Activity设置主题为一张背景图。那么问题就来了,以往16:9的的背景图在18:9的屏幕中会有什么表现呢?


image.png

image.png

这种情况下就尴尬了,我们知道很多启动页背景都是动态下发的(广告)内容丰富,即使是.9图在这种场景恐怕也难以解决。这点在金立手机上的做法值得一提,看图:image.png是好是坏不便多言,但是有兼容性方案总比莫名拉伸好吧!若Android阵营没有一个统一规范,恐怕又要难为开发者、UI设计师了吧!


不能依赖单一厂商的解决方案,只能从Android系统属性出发。考虑到目前大部分全面屏手机只是在高度上拉长,且大多为6.0英寸左右,像素密度对比xxhdpi并没有多大区别,那我们可以在项目中增加一组资源drawable-xxhdpi-2160x1080 、drawable-long 这样解决图片的拉伸问题,当然最好的方法还是用相对布局采用XML的方式,或者.9图的解决方案。


三、虚拟导航键(Navigation Bar)优化

个人觉得虚拟导航键并不是一个好东西,依稀记得HTC被双下巴甚至四下巴支配的恐惧,虚拟导航键总让人出戏。可是全面屏风潮的到来,彻底将正面实体按键拍到了沙滩上。

虚拟导航键系统,桌面美如画,进入到应用里就是傻大粗的黑条,几乎没有几个APP做虚拟导航键的适配,图就不上了,可以参考华为那些机子。。。



image.png总之,要达到一体化的沉浸体验,就应该尽量避免导航键出戏,选择合适的虚拟键样式,保证视觉的统一性。全面屏时代的到来,开发者总该好好管管这虚拟导航键了吧!


虚拟导航键修改方法一: window.setNavigationBarColor (int color)

注意在调用该接口时,需要立一些flag,该接口说明如下:


/** 
* Sets the color of the navigation bar to {@param color}. 
* For this to take effect,
* the window must be drawing the system bar backgrounds with * {@link android.view.WindowManager.LayoutParams#FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS} and
* {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_NAVIGATION} must not be set.
If {@param color} is not opaque, consider setting 
* {@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_STABLE} and * {@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION}. * <p>
 The transitionName for the view background will be "android:navigation:background".
 </p>
 /
 public abstract void setNavigationBarColor(@ColorInt int color);​

虚拟导航键修改方法二:,在主题中添加以下设置项:

<item name="android:navigationBarColor">要设置的颜色值</item>
目录
相关文章
|
18天前
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
195 2
|
2月前
|
缓存 Android开发 开发者
安卓系统优化:提升手机性能的秘诀
【5月更文挑战第31天】本文将探讨如何通过一系列简单的步骤和技巧,对安卓系统进行优化,以提升手机的性能。我们将从清理无用文件、管理后台应用、调整系统设置等方面入手,帮助你的安卓设备运行更加流畅。
|
2月前
|
编解码 人工智能 自然语言处理
让大模型理解手机屏幕,苹果多模态Ferret-UI用自然语言操控手机
【5月更文挑战第29天】苹果推出Ferret-UI,一个结合图像识别和自然语言处理的多模态大语言模型,允许用户通过自然语言指令操控手机。该系统能适应不同屏幕布局,识别UI元素并执行相应操作,有望变革手机交互方式,提升无障碍体验,并在测试和开发中发挥作用。但需面对屏幕多样性及准确性挑战。[论文链接](https://arxiv.org/pdf/2404.05719.pdf)
45 3
|
2月前
|
Android开发
【苹果安卓通用】xlsx 和 vCard 文件转换器,txt转vCard文件格式,CSV转 vCard格式,如何批量号码导入手机通讯录,一篇文章说全
本文介绍了如何快速将批量号码导入手机通讯录,适用于企业客户管理、营销团队、活动组织、团队协作和新员工入职等场景。步骤包括:1) 下载软件,提供腾讯云盘和百度网盘链接;2) 打开软件,复制粘贴号码并进行加载预览和制作文件;3) 将制作好的文件通过QQ或微信发送至手机,然后按苹果、安卓或鸿蒙系统的指示导入。整个过程简便快捷,可在1分钟内完成。
|
2月前
|
Android开发
【通讯录教程】苹果安卓鸿蒙系统通用,如何大批量导入手机号码到手机的通讯录,下面教你方法,只需1分钟搞定几万个号码的导入手机电话本
该文介绍了一种快速批量导入手机通讯录的方法,适用于处理大量手机号的需求,如微商管理、客户资料整理等。在QQ同步助手开始收费后,提供了免费的替代方案。步骤包括:下载批量导入软件(链接提供腾讯云盘和百度网盘地址),清空通讯录(非必需),制作符合格式的通讯录文件,并按操作系统(苹果、安卓或鸿蒙)进行导入。整个过程只需1分钟,简便快捷。
|
17天前
|
前端开发 JavaScript Android开发
手机APP开发|基于安卓APP实现掌上党支部——党员app
手机APP开发|基于安卓APP实现掌上党支部——党员app
|
2月前
|
安全 Android开发 iOS开发
探索安卓与iOS手机操作系统的发展趋势与差异
在移动互联网时代,安卓和iOS手机操作系统一直处于激烈的竞争之中。本文将从技术角度出发,探讨两大操作系统的发展趋势、特点以及差异,并分析其对用户体验和开发者生态的影响,旨在为读者提供对移动操作系统发展方向的深入了解。
|
2月前
|
编解码 移动开发 安全
如何让你的APP变小及手机各屏幕尺寸
如何让你的APP变小及手机各屏幕尺寸
45 0
|
2月前
|
编解码 人工智能 测试技术
安卓适配性策略:确保应用在不同设备上的兼容性
【4月更文挑战第13天】本文探讨了提升安卓应用兼容性的策略,包括理解平台碎片化、设计响应式UI(使用dp单位,考虑横竖屏)、利用Android SDK的兼容工具(支持库、资源限定符)、编写兼容性代码(运行时权限、设备特性检查)以及优化性能以适应低端设备。适配性是安卓开发的关键,通过这些方法可确保应用在多样化设备上提供一致体验。未来,自动化测试和AI将助力应对设备碎片化挑战。
|
2月前
|
Android开发
安卓远离手机app
远离手机是专门为防止年轻人上瘾而打造的生活管理类的软件,适度用手机,保护眼睛,节约时间。
18 0
安卓远离手机app