四、配置 Ability
创建完成后 , 会在 config.json 中的 “abilities” 标签下添加如下 Ability 配置 :
{ "orientation": "unspecified", "visible": true, "name": "com.example.abilityxml.MyAbility", "icon": "$media:icon", "description": "$string:myability_description", "label": "abilityxml", "type": "page", "launchType": "standard" }
orientation 设置方向 , 横屏 / 竖屏 ;
name 设置完整的包名.类名 ;
icon 设置窗口图标 ;
description 设置描述字符串 ;
type 设置当前的 Ability 类型 ;
launchType 设置启动模式 ;
设置该 Ability 为启动 Ability , 将 config.json 中该 Ability 配置放在 “abilities”: [] 标签中第一个 , 按照如下配置 , 自定义的 com.example.abilityxml.MyAbility 就是应用启动后显示的第一个 Ability ;
"abilities": [ { "orientation": "unspecified", "visible": true, "name": "com.example.abilityxml.MyAbility", "icon": "$media:icon", "description": "$string:myability_description", "label": "abilityxml", "type": "page", "launchType": "standard" }, { "orientation": "unspecified", "visible": true, "name": "com.example.abilityxml.MainAbility", "icon": "$media:icon", "description": "$string:mainability_description", "label": "AbilityXml", "type": "page", "launchType": "standard" } ]
五、Ability 加载布局文件
Ability 中加载布局文件 , 在 onStart 中调用 super.setUIContent ( ) 方法 , 设置加载的布局文件 ID , 代码如下 :
package com.example.abilityxml; import com.example.abilityxml.slice.MyAbilitySlice; import ohos.aafwk.ability.Ability; import ohos.aafwk.content.Intent; public class MyAbility extends Ability { @Override public void onStart(Intent intent) { super.onStart(intent); //super.setMainRoute(MyAbilitySlice.class.getName()); // 显示自定义的 mylayout.xml 布局文件 super.setUIContent(ResourceTable.Layout_mylayout); } }
六、完整代码及效果展示
Ability 代码 :
package com.example.abilityxml; import com.example.abilityxml.slice.MyAbilitySlice; import ohos.aafwk.ability.Ability; import ohos.aafwk.content.Intent; public class MyAbility extends Ability { @Override public void onStart(Intent intent) { super.onStart(intent); //super.setMainRoute(MyAbilitySlice.class.getName()); // 显示自定义的 mylayout.xml 布局文件 super.setUIContent(ResourceTable.Layout_mylayout); } }
布局文件代码 :
<?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:height="match_parent" ohos:width="match_parent" ohos:orientation="vertical" ohos:alignment="center"> <Text ohos:id="$+id:text" ohos:width="match_parent" ohos:height="match_content" ohos:text="自定义布局 Text 组件" ohos:text_size="100" ohos:text_alignment="center" /> </DirectionalLayout>
config.json 配置文件代码 :
{ "app": { "bundleName": "com.example.harmony", "vendor": "example", "version": { "code": 1, "name": "1.0" }, "apiVersion": { "compatible": 3, "target": 4, "releaseType": "Beta1" } }, "deviceConfig": {}, "module": { "package": "com.example.abilityxml", "name": ".MyApplication", "deviceType": [ "phone" ], "distro": { "deliveryWithInstall": true, "moduleName": "abilityxml", "moduleType": "feature" }, "abilities": [ { "orientation": "unspecified", "visible": true, "name": "com.example.abilityxml.MyAbility", "icon": "$media:icon", "description": "$string:myability_description", "label": "abilityxml", "type": "page", "launchType": "standard" }, { "orientation": "unspecified", "visible": true, "name": "com.example.abilityxml.MainAbility", "icon": "$media:icon", "description": "$string:mainability_description", "label": "AbilityXml", "type": "page", "launchType": "standard" } ] } }
效果展示 :
四、GitHub 地址
GitHub 主应用 : https://github.com/han1202012/HarmonyHelloWorld
Ability 中使用 XML 布局文件示例 Module : https://github.com/han1202012/HarmonyHelloWorld/tree/master/abilityxml