【鸿蒙 HarmonyOS】Ability 中使用 XML 布局文件 绘制布局及 UI 组件(二)

简介: 【鸿蒙 HarmonyOS】Ability 中使用 XML 布局文件 绘制布局及 UI 组件(二)

四、配置 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"
      }
    ]
  }
}



效果展示 :


image.png






四、GitHub 地址


GitHub 主应用 : https://github.com/han1202012/HarmonyHelloWorld


Ability 中使用 XML 布局文件示例 Module : https://github.com/han1202012/HarmonyHelloWorld/tree/master/abilityxml


目录
相关文章
|
5月前
|
编解码 视频直播 开发工具
|
3月前
鸿蒙使用 @Builder扩展出来的布局数据更新没法更新UI
鸿蒙使用 @Builder扩展出来的布局数据更新没法更新UI
96 1
|
3月前
|
存储 开发框架 安全
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段一
HarmonyOS NEXT星河版的应用开发标志着华为分布式操作系统的全新篇章,它聚焦于打造原生精致、易用、流畅、安全、智能和互联的极致体验。开发者可以利用其先进的API和工具集,如DevEco Studio,构建高性能、跨设备无缝协同的应用程序,从而充分利用HarmonyOS的分布式能力,为用户带来一致且丰富的多场景数字生活体验。随着“学习强国”、岚图汽车、中国电信等知名企业和应用的加入,鸿蒙生态正迅速扩展,引领着原生应用开发的新趋势。
99 3
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段一
|
3月前
|
域名解析 网络协议 调度
阿里云移动研发平台EMAS支持纯血鸿蒙HarmonyOS NEXT
阿里云移动研发平台EMAS作为面向应用全生命周期提供一站式的应用研发管理服务产品,其核心产品包括云构建,HTTPDNS 和移动推送正式推出了针对纯血鸿蒙的SDK版本,将为广大开发者在鸿蒙生态中构建高效、稳定、可靠的企业级应用提供强有力的支持。如有疑问,请进入钉钉群(群号35248489)进行相关咨询。
|
4月前
|
Android开发 开发者
Android UI设计中,Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等,定义在`styles.xml`。
【6月更文挑战第26天】Android UI设计中,Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等,定义在`styles.xml`。要更改主题,首先在该文件中创建新主题,如`MyAppTheme`,覆盖所需属性。然后,在`AndroidManifest.xml`中应用主题至应用或特定Activity。运行时切换主题可通过重新设置并重启Activity实现,或使用`setTheme`和`recreate()`方法。这允许开发者定制界面并与品牌指南匹配,或提供多主题选项。
54 6
|
3月前
鸿蒙使用 @Builder扩展出来的布局数据更新没法更新UI
采用的方法是在修改数据时,通过`this.dArray.splice(index, 1, this.dArray[index])`替换指定元素,强制数组更新并反映到界面上。
118 0
|
5月前
|
安全 调度
鸿蒙HarmonyOS实战-Stage模型(线程模型)
本文介绍了线程作为操作系统调度的最小单位,是进程中的执行流,具有轻量级、并发执行、共享资源、通信简单和上下文切换等特点。线程分为用户线程和内核线程,其中内核线程由操作系统管理,而用户线程由应用程序控制。线程用于提高程序性能和响应速度,尤其适合多任务并发处理。在HarmonyOS中,每个应用有主线程负责UI和 ArkTS 引擎管理,以及Worker线程执行耗时任务。线程间通信可通过Emitter实现事件同步和Worker进行异步操作。
106 0
|
5月前
|
Java 开发工具 Android开发
鸿蒙HarmonyOS 与 Android 的NDK有什么区别?
鸿蒙(HarmonyOS)和Android的NDK(Native Development Kit)是两个不同的概念,它们在设计理念、架构、开发方式和目标平台等方面存在着一些显著的不同。
193 0
|
5月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
|
5月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍

相关课程

更多
下一篇
无影云桌面