开发环境准备
配置HUAWEI DevEco Studio开发环境:请参考下载与安装软件、配置开发环境,完成DevEco Studio的安装和开发环境的配置。
HarmonyOS SDK版本应为2.1.1.21及以上。
easygo.json配置文件元素
easygo.json配置文件用于配置平行视界显示策略,是平行视界开发的主要内容,相关元素如下表所示。
参数 |
配置建议 |
描述 |
---|---|---|
easyGoVersion |
必选 |
固定值为“1.0”。 |
client |
必选 |
应用包名。 |
logicEntities.head.function |
必选 |
调用组件名,固定值为“magicwindow”。 |
logicEntities.head.required |
必选 |
预留字段,固定值为“true”。 |
logicEntities.body.mode |
必选 |
基础分屏模式。 “0”:购物模式,abilityPairs节点不生效 “1”:自定义模式(包括导航模式) |
logicEntities.body.abilityPairs |
自定义模式下必选 |
自定义模式参数,配置从from页面到to页面的分屏显示。 |
logicEntities.body.abilityPairs.from |
自定义模式下必选 |
触发分屏的源Page Ability名称。 采用自定义模式时:[{“from”:”com.xxx.AbilityA”,”to”:”com.xxx.AbilityB”}],表示A上启动B,触发分屏(A左B右)。 采用导航模式时:[{“from”:”com.xxx.AbilityA”,”to”:”*”}]。 |
logicEntities.body.abilityPairs.to |
自定义模式下必选 |
触发分屏的目标Page Ability名称。 “*”表示任意Page Ability。 采用自定义模式时:[{“from”:”com.xxx.AbilityA”,”to”:”com.xxx.AbilityB”}],表示A上启动B,触发分屏(A左B右)。 采用导航模式时:[{“from”:”com.xxx.AbilityA”,”to”:”*”}]。 |
logicEntities.body.defaultDualAbilities |
可选 |
应用冷启动默认打开首页双屏配置。 |
logicEntities.body.defaultDualAbilities.mainPages |
defaultDualAbilities配置时必选 |
主页面Page Ability,可以有多个,分号隔开;冷启动应用打开此页面时,系统在右屏自动启动relatedPage页面。 |
logicEntities.body.defaultDualAbilities.relatedPage |
defaultDualAbilities配置时必选 |
mainPages和relatedPage只能配置1对,需要具体的Ability名,不支持通配符。 如: [{“mainPages”:”com.xxx.MainAbility”,”relatedPage”:”com.xxx.EmptyAbility”}] |
logicEntities.body.transAbilities |
可选 |
过渡页面列表。 如:[ “com.xxx.AbilityD”,”com.xxx.AbilityE”,”com.xxx.AbilityF”] |
logicEntities.body.Abilities |
可选 |
应用Page Ability属性列表。 |
logicEntities.body.Abilities.name |
可选 |
Page Ability组件名。 |
logicEntities.body.Abilities.defaultFullScreen |
可选 |
Page Ability是否支持默认以全屏启动。 true:支持 false:不支持 缺省值为false。 |
logicEntities.body.UX |
可选 |
页面UX控制配置。 |
logicEntities.body.UX.supportRotationUxCompat |
可选 |
是否开启窗口缩放,用于提高转屏应用UX显示兼容性。仅针对平板产品生效。 true:支持 false:不支持 缺省值为false。 |
logicEntities.body.UX.isDraggable |
可选 |
是否支持分屏窗口拖动。仅针对平板产品生效。 true:支持 false:不支持 缺省值为false。 |
logicEntities.body.supportVideoFullscreen |
可选 |
是否支持视频全屏。仅针对平板产品生效。 true:支持 false:不支持 缺省值为true。 |
logicEntities.body.UX.supportDraggingToFullScreen |
可选 |
是否支持在分屏和全屏之间拖动切换。 ALL:所有设备上支持此功能 PAD: 仅平板产品上支持此功能 FOLD: 仅折叠屏上支持此功能 如果支持多个产品,可以用”|”进行分割,例如在折叠屏和平板上同时支持,则配置为”PAD|FOLD”。 |
logicEntities.body.UX.supportLock |
可选 |
是否支持应用内用户锁定功能。 配置为true后,双窗口显示状态会显示锁定按钮,用户点击后可以进行锁定和解锁操作;锁定后,左右窗口不再关联,即左侧打开新窗口在左侧显示,右侧打开新窗口在右侧显示。 true:支持锁定 false:不支持 缺省值为false。 |
开发步骤
在entry.hap的config.json配置文件的“module”对象中新增metaData:
“module”: {
…
“metaData”: {
“customizeData”: [{
“name”: “EasyGoClient”,
“value”: “true”
}]},
…
}
创建平行视界配置文件easygo.json。
在entry.hap的src/main/resources/rawfile目录下,创建easygo.json。需要注意的是,easygo.json必须且只能在entry.hap中配置,禁止配置在feature.hap中。
配置应用的平行视界显示策略。
导航模式
导航模式下,核心配置点为abilityPairs属性。示例代码如下:
{
“easyGoVersion”: “1.0”,
“client”: “com.huawei.example”,
“logicEntities”: [
{
“head”: {
“function”: “magicwindow”,
“required”: “true”
},
“body”: {
“mode”: “1”,
“abilityPairs“: [
{
“from”: “com.huawei.example.MainAbility”,
“to”: “*”
},
{
“from”: “com.huawei.example.SearchAbility”,
“to”: “*”
}
],
“defaultDualAbilities”: {
“mainPages”: “com.huawei.example.MainAbility”,
“relatedPage”: “com.huawei.example.A0Ability”
},
“Abilities”: [
{
“name”: “com.huawei.example. AFullScreenAbility “,
“defaultFullScreen”: “true”
},
{
“name”: “com.huawei.example. BFullScreenAbility “,
“defaultFullScreen”: “true”
}
],
“UX”: {
“isDraggable”: “true”
}
}
}
]
}
购物模式
{
“easyGoVersion”: “1.0”,
“client”: “com.huawei.example”,
“logicEntities”: [
{
“head”: {
“function”: “magicwindow”,
“required”: “true”
},
“body”: {
“mode”: “0”,
“defaultDualAbilities”: {
“mainPages”: “com.huawei.example.Main1Ability”,
“relatedPage”: “com.huawei.example.A0Ability”
},
“transActivities”: [
“com.huawei.example.A1Ability”,
“com.huawei.example.A2Ability”
],
“Abilities”: [
{
“name”: “com.huawei.example.AFullScreenAbility”,
“defaultFullScreen”: “true”
},
{
“name”: “com.huawei.example.BFullScreenAbility”,
“defaultFullScreen”: “true”
}
]
}
}
]
}
平行视界状态下,部分Page Ability希望以全屏来显示,有三种方法:
方法1:动态全屏显示。Page Ability首先以平行视界非全屏显示,完成上述开发后,继续调用如下接口申请横屏方向可进入全屏显示状态:
getContext().setDisplayOrientation(AbilityInfo.DisplayOrientation.LANDSCAPE);
在此状态下,调用申请竖屏方向即可退出全屏状态:
getContext().setDisplayOrientation(AbilityInfo.DisplayOrientation. PORTRAIT);
方法2:Page Ability一直以全屏状态显示。在easygo.json文件的Abilities属性中,将Page Ability的defaultFullScreen配置为true,即可实现Page Ability默认以全屏显示。
方法3:Page Ability一直以全屏状态显示。在config.json文件的Abilities属性中,将Page Ability的orientation配置为landscape(横屏),Page Ability会一直以全屏状态显示。
编译HAP包后进行调试。
配置真机调试:多设备UI适配的调试,推荐使用真机设备,且其系统软件版本不低于HarmonyOS 2.0。详细的调试流程请参见真机调试指导。