AndroidAndroid开发经验谈互联网科技

华为Mate X显示适配指导来了!带你完美适配折叠屏

2019-03-25  本文已影响9人  技术爱好
0 (1).jpg

华为Mate X一经发布便引发了世界级的关注,除了史无前例的交互体验外,作为一款可以变形的手机,它还拥有多种不同的形态:展开时是8英寸全面屏,折叠后又变身为6.6英寸和6.38英寸两块屏幕。

独特的屏幕显示在俘获大批用户的同时也对应用开发者提出了更高要求,要怎样才能完美适配华为Mate X呢?请详细阅读本文!

1. 背景和范围

本文针对华为Mate X 以及后续可能的折叠屏产品,提供应用适配的规格要求描述,以及适配指导。以确保应用在折叠屏显示各种形态下,皆可以布局正确,显示美观,并且屏幕物理形态切换时,应用尽可能做到不重启,不中断当前用户业务。

2. 适用范围

文档适用于Android平台APP相关的设计,开发,测试人员等。

3. 规格描述

3.1 Mate X物理形态概述

Mate X物理形态概述.jpg

关于通用软件,可能存在如下形态,即:

3.2 静态适配需求规格描述

3.2.1 大屏静态显示规格

大屏静态显示规格.jpg
大屏静态显示规格1.jpg

3.3 动态适配需求规格描述

说明:
(1)任意形态下打开一个应用,满足以上静态显示规格
(2)当用户物理形态切换时,应用需要做到不重启应用,并自动在新的设备形态下按照静态规格布局。
即:在用户进行展开,折叠等操作, 应用任务不中断,自动适应各种屏幕下的静态布局规格。


动态适配需求规格描述.jpg

4. 设计和开发指导

4.1 大屏布局UI设计指导

如下适配建议以及各应用适合适配类型,仅作为推荐性建议,具体由应用根据各自业务特性进行针对性设计。
4.1.1 适配建议一:X轴方向自适应

4.2 适配开发指导

4.2.1 开发约束
说明:具备8:7.1, 19.5:9, 25:9, 三种可能的显示形态。
强烈建议应用支持可变比例显示(resizeable),在可预见的屏幕比例范围内,都可以做到良好适配。且在比例切换时,应用能够自己处理 screenSize 变化,不需要重走生命周期。总结来说,即要求应用无论静态还是场景切换下都可以完全支持自适应布局。
4.2.2 适配规格
应用适配折叠屏需要做“屏幕比例适配”和“切换显示比例应用不重启适配”。
4.2.2.1 屏幕比例适配
适配方式1:应用支持自适应能力(推荐)
应用只要能做到自适应,在任意比例的屏幕都能做到全屏显示。

  1. 应用如何申明自适应 应用如何申明自适应.jpg
  2. 设置方法:在 manifest 文件的 <activity> 或 <application> 节点中设置 android:resizeableActivity 的值为true,可声明应用支持自适应显示,Activity 将能以分屏和 freeform 模式启动。
    android:resizeableActivity=["true" | "false"]

适配方式2:设置应用支持的最大比例和最小比例适配

为保证应用在主副屏或者大屏态能保证满屏显示,请尽快确保应用可以支撑较高范围的宽高比,避免后续反复适配,华为建议最高宽高比支持到2.4或者更大(可以确保在主屏、辅屏下满屏显示,如果设置的比例小于2.4可能因为最终屏幕比例与当前规格存在差异引起应用无法全屏显示),最小宽高比为1:1(可以确保在展开态大屏下满屏显示)。

应用如何自处理screenSize事件,确保热切换时不重走生命周期。

在 manifest 文件的 <activity> 节点中的 android:configChanges 属性增加 screenSize|smallestScreenSize|screenLayout字符串,当屏幕比例变化时,系统会回调 Activity 的 onConfigurationChanged() 方法,而避免 Activity 重新启动。
android:configChanges="screenSize|smallestScreenSize|screenLayout"
应用复写 onConfigurationChanged() 方法,通过该方法的Configuration参数获得屏幕的分辨率等信息,就可以针对不同比例屏幕下的应用界面布局做相应调整,如切换布局、调整控件位置和间距等。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.i("test", "newConfig.screenHeightDp:" + newConfig.screenHeightDp
+ ", newConfig.screenWidthDp" + newConfig.screenWidthDp);
//根据屏幕分辨率信息调整应用的布局
}

4.3 调试

4.3.1 模拟调试
如果开发者没有折叠屏手机,可以通过修改屏幕分辨率来模拟调试:

  1. 主屏(折叠)切全屏(展开)模拟方法:
  1. 全屏(展开)切主屏(折叠)模拟方法:
  1. 分辨率恢复方法:adb shell wm size reset
上一篇 下一篇

猜你喜欢

热点阅读