前言
先来回顾一下上一篇文章的easygo.json配置文件的相关元素的描述:HarmonyOS开发案列:轻松玩转平行视界(上)
{
"easyGoVersion": 必选,固定值为"1.0",
"client": 必选,该程序的应用包名,
"logicEntities": [
{
"head": {
"function": 必选,调用组件名,固定值为"magicwindow",
"required": 必选,预留字段,固定值为"true"
},
"body": {
"mode": 必选,基础分屏模式."0":购物模式,abilityPairs节点不生效;"1":自定义模式(包含导航模式),
"abilityPairs": [自定义模式下必选,配置从from页面到to页面的分屏显示
{
"from": 自定义模式下必选,AbilityA的包名,
"to": 自定义模式下必选,AbilityB的包名,
}表示A上启动B,触发分屏(A左B右)
],
"Abilities": [可选,应用Page Ability属性列表,
{
"name": 可选,Page Ability包名,
"defaultFullScreen": 可选,Page Ability是否支持默认以全屏启动."true": 支持;,"false": 不支持
},
{
"name": 可选,Page Ability包名,
"defaultFullScreen": 可选,Page Ability是否支持默认以全屏启动."true": 支持;,"false": 不支持
}
],
"UX": {可选,页面UX控制配置
"isDraggable": 可选,是否支持分屏窗口拖动(仅针对平板产品生效)."true": 支持;,"false": 不支持(缺省值为false)
}
}
}
]
}
导航模式
代码文件
代码文件结构如下:
下面只给出部分重点代码
FirstAbilitySlice.java:
public class FirstAbilitySlice extends AbilitySlice {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_first);
findComponentById(ResourceTable.Id_btn_yes).setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
getContext().setDisplayOrientation(AbilityInfo.DisplayOrientation.LANDSCAPE);//申请横屏方向可进入全屏显示状态
}
});
findComponentById(ResourceTable.Id_btn_no).setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
getContext().setDisplayOrientation(AbilityInfo.DisplayOrientation. PORTRAIT);//调用申请竖屏方向即可退出全屏状态
}
});
findComponentById(ResourceTable.Id_btn2).setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
Operation operation = new Intent.OperationBuilder()
.withDeviceId("")
.withBundleName(getBundleName())
.withAbilityName(SecondAbility.class.getName())
.build();
intent.setOperation(operation);
startAbility(intent);
}
});
findComponentById(ResourceTable.Id_btn3).setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component