
郑燕华html
华为CBG软件部高级工程师,华为折叠屏手机&平板平行视界应用创新生态构建负责人。android
本文根据华为CBG软件部高级工程师郑燕华在第六期零基础高效适配折叠屏活动上发表《折叠屏手机平行视界分享》主题演讲整理而成,主要介绍华为折叠屏手机平行视界配置接入方法,并围绕开发指导以及适配建议进行分享。json

平行视界简介
swift
平行视界以Activity为基本单位以左右窗口分离显示技术、双窗口生命周期管理、双窗口显示模式和切换逻辑为核心技术的实现应用内分屏的系统侧解决方案。应用能够根据自身业务设计分屏显示Activity组合,以实现符合应用逻辑的最佳单应用多窗口用户体验,且支持一次开发,多端部署。
一个手机版本能够经过平行视界支持多个华为设备。以往针对普通手机、平板、折叠屏手机这三款产品,由于屏幕尺寸大小有差别化,一个App须要同时开发和维护三个版本,致使工做量和成本都很大。如今只须要在手机版本的基础上,经过平行视界适配一个版本便可。
平行视界能够大幅提高用户体验。
传统浏览方式VS平行视界浏览方式:
传统浏览方式windows
用户操做:点击会话1→→输入→→返回→→点击会话2→→输入→→返回→→…
平行视界浏览方式ruby
优点:可有效减小全屏页面切换给用户带来的不连续性,提升操做效率。

典型场景与案例分享
bash
商品详情快切,可减小页面跳转感,使商品查找更加高效。
商品对比,一目了然,可避免传统不一样页面间跳转对比,使商品对比更精准。
改变以往客服页面独占式的布局,给用户带来更轻量的多任务体验。

基础适配
微信
看到这么酷炫的效果,那你的App如何实现平行视界呢,会不会很复杂?答案是并不会。只须要两步配置便可完成。
AndroidManifest.xml 新增 meta-data申明
<meta-data android:name="EasyGoClient“ android:value="true" />
assets目录下新加配置文件easygo.json
{ "easyGoVersion": "1.0", //Version number "client": "client": "com.example.myapplication", … "body": { “mode”:“1”,// 1:导航模式;0:购物模式 "activityPairs":[ {"from":"com. myapplication.MainActivity","to":"*"} ], … } ]}
这里提个建议,配置文件最好去官网示例代码页面下载现成的模板。以前遇到过不少配置文件字段、格式不正确而致使不生效的问题,浪费时间。接下来是重点参数的介绍。
在上图中,什么是过渡页面?
好比,App中用户在Activity A页面点击打开Activity C,正常启动方式是在Activity A中start Activity C ,有时因为某些特殊的缘由须要先打开Activity B,Activity B中打开Activity C,Activity B自行finish,Activity B就叫过渡页面。若是没有这个参数会发生闪屏。闪一下Activity B再出来Activity C,体验效果不佳。配置上Activity B,系统就会帮助开发者处理这种问题。

分屏模式的配置样例app
须要注意的是:
左右分屏的返回是不同的,注意左图中的蓝色虚线,左屏C的返回会把B和C都销毁,左屏C的返回只是销毁C。

APP Multiplier – FAQ
ide
1. 排查easygo.json配置文件的格式是否正确,可否正确解析,路径是否正确,建议复制模板内容,不要修改参数名称;
3. 折叠屏是设备竖屏方向生效,平板是设备横屏方向生效。
问题2. 如何判断Activity是否运行在平行视界状态?
能够根据Activity的configuration来判断此Activity是否运行在平行视界模式,代码以下:
String config = context.getResources().getConfiguration().toString();boolean isInMagicWindow = config.contains("hwMultiwindow-magic") || config.contains("hw-magic-windows");
问题3.如何获取Activity实际显示的窗口大小?
推荐使用:context.getResources().getDisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
上述接口中,context为Activity对应的上下文句柄,每一个Activity应该严格使用本身的context来进行布局,而不是使用application的context。
本篇文章的分享只是基础的内容,更加全面具体的内容,可参考:
1. 平行视界开发指南:
https://developer.huawei.com/consumer/cn/doc/development/UI-Guides/app-multiplier-introduction
https://developer.huawei.com/consumer/cn/codelab/AppMultiplier/index.html
· END ·
往 期 精 选 文 章 回 顾

