【鸿蒙 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天前
|
存储 缓存 5G
鸿蒙 HarmonyOS NEXT端云一体化开发-云存储篇
本文介绍用户登录后获取昵称、头像的方法,包括通过云端API和AppStorage两种方式,并实现上传头像至云存储及更新用户信息。同时解决图片缓存问题,添加上传进度提示,支持自动登录判断,提升用户体验。
31 0
|
5天前
|
存储 负载均衡 数据库
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
本文介绍基于华为AGC的端云一体化开发流程,涵盖项目创建、云函数开通、应用配置及DevEco集成。重点讲解云函数的编写、部署、调用与传参,并涉及环境变量设置、负载均衡、重试机制与熔断策略等高阶特性,助力开发者高效构建稳定云端服务。
47 0
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
|
5天前
|
存储 JSON 数据建模
鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇
云数据库采用存储区、对象类型、对象三级结构,支持灵活的数据建模与权限管理,可通过AGC平台或本地项目初始化,实现数据的增删改查及端侧高效调用。
26 0
|
5天前
|
存储 开发者 容器
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
本文介绍了ArkTS语言中的Class类、泛型、接口、模块化、自定义组件及状态管理等核心概念,并结合代码示例讲解了对象属性、构造方法、继承、静态成员、访问修饰符等内容,同时涵盖了路由管理、生命周期和Stage模型等应用开发关键知识点。
51 0
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
|
5天前
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段三
本文介绍了UI开发中的样式复用与组件构建技术,涵盖@Extend、@Styles和@Builder的使用方法,并通过Swiper轮播、Scroll滚动、Tabs导航等常用组件实现典型界面效果,结合生肖抽卡、小米轮播、回顶按钮等案例,展示实际应用技巧。
38 0
|
5天前
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段二
本文介绍鸿蒙应用界面开发中的弹性布局(Flex)、绝对定位、层叠布局及ArkTS语法进阶,涵盖字符串拼接、类型转换、数组操作、条件与循环语句,并结合B站视频卡、支付宝首页等案例,深入讲解点击事件、状态管理与界面交互功能。
36 0
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段二
|
3月前
|
设计模式 缓存 容器
06.HarmonyOS Next UI进阶:Text组件与视觉样式完全指南
在HarmonyOS Next应用开发中,Text组件是最基础也是最常用的UI元素之一。它不仅用于显示文本内容,还可以通过丰富的样式属性实现各种视觉效果。掌握Text组件的样式设置,是构建精美UI界面的基础技能。
157 1
【鸿蒙 HarmonyOS】UI 组件 ( 拖动条 Slider 组件 )
【鸿蒙 HarmonyOS】UI 组件 ( 拖动条 Slider 组件 )
512 0
【鸿蒙 HarmonyOS】UI 组件 ( 拖动条 Slider 组件 )
|
XML Java 数据格式
HarmonyOS学习路之开发篇—Java UI框架(自定义组件与布局 二)
自定义布局 当Java UI框架提供的布局无法满足需求时,可以创建自定义布局,根据需求自定义布局规则
|
XML 前端开发 Java
HarmonyOS学习路之开发篇—Java UI框架(自定义组件与布局 一)
HarmonyOS提供了一套复杂且强大的Java UI框架,其中Component提供内容显示,是界面中所有组件的基类。ComponentContainer作为容器容纳Component或ComponentContainer对象,并对它们进行布局。

相关课程

更多