Android全面屏适配指南

一、 什么是全面屏?

很多人可能把全面屏跟曲面屏混淆,其实这是两个不同的概念。一般手机的屏幕纵横比为16:9,如1080x1920等,全面屏手机出现之前,Android中默认的最大屏幕纵横比(maximum aspect ratio)为1.86(安卓7.0之前的版本),即最大能够兼容16:9的屏幕。一些手机厂商为了追求更大的屏幕空间以及更极致的用户体验,于是提高了屏幕纵横比,17:9、19:10、18:9、18.5:9的手机开始进入市场,这些手机被称为全面屏手机。

目前市面上的全面屏机型

机型

屏幕纵横比

上市时间

小米MIX

17:9

2016年10月

LG G6

18:9

2017年2月

Samsung Galaxy S8

18.5:9

2017年5月

Essential Phone

19:10

2017年8月

华为荣耀也会发布全面屏的旗舰型手机。

比起将来全面屏的百花齐放,作为Android开发者更多关心的是屏幕适配的兼容性。全面屏手机大致思路都是压缩额头与下巴,屏幕比例从传统的16:9变为18:9,提高屏占比以及增加屏幕内的虚拟导航键。

二.谷歌CDD(Compatibility Definition Document)文档

每一款安卓手机都要符合对应安卓版本的CDD,即Compatibility Definition Document。谷歌官方的解释是:“Android兼容性定义文档 (CDD)列举了设备需要满足哪些要求才能与最新的 Android 系统版本兼容。

安卓6.0 CDD对屏幕的比例要求是必须介于4比3和16比9之间。不符合CDD的设备无法通过谷歌的CTS测试。

安卓7.0的CDD里面不再强制要求屏幕比例必须在4比3和16比9之间。

       目前最近最新消息是,谷歌在安卓开发平台呼吁开发者升级自己的App以适应高屏占比旗舰机的屏幕。

三.全面屏适配指南

       由于全面屏手机的纵横比比之前大,如果不适配的话,Android默认为1.86,小于全面屏手机的纵横比,在全面屏手机上打开App时,上下就会留有空间,显示为黑条。虽不影响功能,但极其影响视觉体验,另外全面屏提供的额外空间也没有得以利用。

3.1 声明最大屏幕纵横比(官方适配方案)

Android官方提供了适配方案,即提高App所支持的最大屏幕纵横比,实现很简单,在AndroidManifest.xml中可做如下配置:

<meta-data

  android:name="android.max_aspect"

  android:value="ratio_float" />

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

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

鉴于目前全面屏屏幕比例,将ratio_float设置为2.1即可适配一众全面屏手机。然而有一点需要注意的是,在Android 7.0以上Google默认支持了分屏模式,即Manifest文件中配置Activity的android:resizeableActivity默认属性为true,在这种情况下并不需要配置Maximum Aspect Ratio即可自动适配全面屏。

3.2 启动页适配

启动页我们往往会设置一张背景图或广告页,那么问题就来了,以往16:9的的背景图在18:9的屏幕中会有什么表现呢?

现实往往是很残酷的,在某些场景下会存在图片拉伸的情况,我们知道很多启动页背景都是动态下发的(广告)内容丰富,即使是.9图在这种场景恐怕也难以解决。

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

3.3 虚拟导航键(Navigation Bar)优化

虚拟键盘的好坏仁者见仁,智者见智,但全面屏风潮的到来,彻底将正面实体按键拍到了沙滩上。目前几乎没有几个APP做虚拟导航键的适配,图就不上了,可以参考华为那些机子。总之,要达到一体化的沉浸体验,就应该尽量避免导航键出戏,选择合适的虚拟键样式,保证视觉的统一性。

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

PS:调用接口时需要立一些flag设置

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

  <itemname="android:navigationBarColor">要设置的颜色值</item>

注意,以上方法在Android5.0以上生效,不过,都全面屏了肯定上7.0+了啊!

虚拟导航键在安卓4.0系统版本开始就引入了,目前我们阅读项目,对于虚拟导航键布局高度位置距离计算都已做了动态适配,目前需要做的可能只是需要在沉浸式体验样式上做下努力,使得虚拟导航键样式不至于太过突兀。

四.总结

       总的来说,全面屏的到来为沉闷的手机设计带来了些惊喜,给用户眼前一亮之感,虽然可能会引发不少开发者骂娘,但还是应当顺应历史潮流,况且很多情况Android系统早已有适配方案了不是?

阅读更多

没有更多推荐了,返回首页