【鸿蒙学习】深入了解UIAbility组件

文章目录

在鸿蒙操作系统(HarmonyOS)的开发过程中,UIAbility组件是构建应用界面的关键。本文将带您了解UIAbility组件的概述、生命周期、启动模式以及基本用法,并通过代码示例帮助您更好地掌握这一组件。

组件概述

UIAbility是HarmonyOS应用开发中的一个重要组件,用于处理用户界面交互。它类似于Android中的Activity和iOS中的ViewController。UIAbility提供了丰富的UI控件,开发者可以通过这些控件构建出美观、易用的应用界面。

UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口。一个应用可以包含一个或多个UIAbility组件。例如,在支付应用中,可以将入口功能和收付款功能分别配置为独立的UIAbility。

每一个UIAbility组件实例都会在最近任务列表中显示一个对应的任务。

UIAbility组件具有以下特点:

  • 提供页面导航、布局、事件处理等功能。
  • 支持多种布局方式,如DirectionalLayout、DependentLayout等。
  • 支持自定义UI控件。
    声明配置
    为使应用能够正常使用UIAbility,需要在module.json5配置文件的abilities标签中声明UIAbility的名称、入口、标签等相关信息。
java 复制代码
{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "phone",
      "tablet"
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:icon_bak",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:icon_bak",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ]
  }
}

生命周期

官网地址:生命周期状态说明

UIAbility组件的生命周期包括以下几个状态:

  1. ** 初始化(UIAbility Start)**:在Ability被创建时调用,用于初始化Ability。
  2. ** 启动(create)**:在Ability可见时调用。
  3. 前台运行(Foreground):在Ability进入前台时调用。
  4. 后台运行(Background):在Ability进入后台时调用。
  5. 销毁(onDestroy) :在Ability被销毁时调用。
    以下是一个简单的生命周期示例:
java 复制代码
public class MyAbility extends Ability {
    @Override
    public void onInitialize() {
        super.onInitialize();
        // 初始化操作
    }
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        // 启动操作
    }
    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
        // 前台运行操作
    }
    @Override
    public void onBackground() {
        super.onBackground();
        // 后台运行操作
    }
    @Override
    public void onStop() {
        super.onStop();
        // 停止操作
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        // 销毁操作
    }
}

启动模式

UIAbility支持以下启动模式:

  1. 标准模式(Standard):每次启动都会创建一个新的实例。
  2. 单例模式(Singleton):整个应用生命周期内只创建一个实例。
  3. 栈顶复用模式(SingleInstance) :如果栈顶存在实例,则复用该实例,否则创建新实例。
    在config.json中配置启动模式:
json 复制代码
{
  "module": {
    "abilities": [
      {
        "name": ".MyAbility",
        "launchType": "standard"
      }
    ]
  }
}

基本用法

以下是一个简单的UIAbility组件用法示例,创建一个包含文本和按钮的页面:

java 复制代码
public class MyAbility extends Ability {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_my);
        // 查找组件
        Text text = (Text) findComponentById(ResourceTable.Id_text);
        Button button = (Button) findComponentById(ResourceTable.Id_button);
        // 设置文本
        text.setText("Hello HarmonyOS!");
        // 设置按钮点击事件
        button.setClickedListener(component -> {
            text.setText("Button clicked!");
        });
    }
}

对应的布局文件(ability_my.xml):

xml 复制代码
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:orientation="vertical">
    <Text
        ohos:id="$+id:text"
        ohos:height="match_content"
        ohos:width="match_parent"
        ohos:text="Hello HarmonyOS!"
        ohos:text_size="20fp"
        ohos:padding="20vp"/>
    <Button
        ohos:id="$+id:button"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:text="Click Me"
        ohos:text_size="20fp"
        ohos:padding="20vp"/>
</DirectionalLayout>

通过以上示例,您已经了解了如何在HarmonyOS应用中使用UIAbility组件构建界面。掌握UIAbility组件是开发HarmonyOS应用的关键,希望本文能帮助您更好地入门鸿蒙开发。

相关推荐
Da Da 泓5 分钟前
多线程(八)【定时器】
java·学习·多线程·定时器
normanhere7 分钟前
华为USG6525E防火墙高可用部署配置和注意事项
网络·华为
qq_4634084218 分钟前
Ubuntu如何搭建OpenHarmony_6.1.0.28的lycium_plusplus及鸿蒙 PC 环境设计的 C/C++ 编译框架
c语言·ubuntu·pc·harmonyos
FAFU_kyp23 分钟前
Rust 泛型(Generics)学习教程
开发语言·学习·rust
南村群童欺我老无力.27 分钟前
Flutter 框架跨平台鸿蒙开发 - 每日食谱推荐应用开发教程
flutter·华为·harmonyos
猛扇赵四那边好嘴.31 分钟前
Flutter 框架跨平台鸿蒙开发 - 表情包本地管理器应用开发教程
flutter·华为·harmonyos
不会写代码00031 分钟前
Flutter 框架跨平台鸿蒙开发 - 节日礼物清单应用开发教程
flutter·华为·harmonyos·节日
代码游侠34 分钟前
ARM开放——阶段问题综述(一)
arm开发·笔记·嵌入式硬件·学习·架构
试试勇气35 分钟前
Linux学习笔记(十二)--用户缓冲区
linux·笔记·学习
摘星编程35 分钟前
React Native鸿蒙:LayoutAnimation配置弹簧动画
react native·react.js·harmonyos