HarmonyOS-鸿蒙app开发 —基于java_平行视界_平行视界开发指导

HarmonyOS-鸿蒙app开发 —基于java_平行视界_平行视界开发指导

开发环境准备

配置HUAWEI DevEco Studio开发环境:请参考下载与安装软件配置开发环境,完成DevEco Studio的安装和开发环境的配置。

HarmonyOS SDK版本应为2.1.1.21及以上。

easygo.json配置文件元素

easygo.json配置文件用于配置平行视界显示策略,是平行视界开发的主要内容,相关元素如下表所示。

表1 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配置时必选

mainPagesrelatedPage只能配置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。

开发步骤

配置metaData,声明支持平行视界。

在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。详细的调试流程请参见真机调试指导

调测验证

编译出HAP后,如果修改了easygo.json文件,安装时需注意:

应用版本号没有变化,需要先卸载原来的HAP,再安装新的HAP,不能直接覆盖安装,否则easygo.json修改内容不生效。

应用版本号发生了变化,可以直接覆盖安装。

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x