鸿蒙4.0开发笔记之ArkTS语法基础的UI描述、基础组件的使用与如何查看组件是否有参数(八)

news/2024/7/5 2:43:25

文章目录

    • 一、声明式UI描述
      • 1、无/有参数组件
      • 2、如何查看组件是否有参数
    • 二、Image组件的使用
    • 三、组件的属性设置
    • 四、补充
      • 1、使用组件的成员函数配置组件的事件方法
      • 2、配置子组件
      • 3、多组件嵌套

一、声明式UI描述

在HarmonyOS的ArkTS语法中,万物皆组件。ArkTS以声明方式组合和扩展组件来描述应用程序的UI,同时还提供了基本的属性、事件和子组件配置方法,帮助开发者实现应用交互逻辑。根据组件构造方法的不同,创建组件包含有参数和无参数两种方式。

1、无/有参数组件

无参数组件:
如果组件的接口定义没有包含必选构造参数,则组件后面的“()”不需要配置任何内容。例如,Divider组件不包含构造参数:

Column() {
  Text('HarmonyOS')
  Divider()
  Button('点我跳转')
}

有参数组件:
如果组件的接口定义包含构造参数,则在组件后面的“()”配置相应参数。例如mage组件的必选参数src。

2、如何查看组件是否有参数

(1)方法一:
寻找官方文档:找到文档下面的“API参考”
1.1.1
在目录树下找到“组件参考”,然后找到“基础组件”,最后就可以看到如button这些基础组件的使用说明了。
1.1.2
(2)方法二:
按住Ctrl键,然后将鼠标移动到组件名上,会出现一个下划线,点击一下就能够进入组件的定义。
1.2.1
在组件的定义再用同样的方式(Ctrl+鼠标左键)进入接口的定义。
2.2.2
比如在接口的定义中就可以看到Text组件参数的设定:?表示可选参数,若要填参数则可以传递string和resource类型的参数。同样,在Divider的接口函数中则可以看到不需要传递参数。
1.2.3

二、Image组件的使用

1、定义
Image为图片组件,常用于在应用中显示图片。Image支持加载string、PixelMap和Resource类型的数据源,支持png、jpg、bmp、svg和gif类型的图片格式。

2、网络图片类型调用(网络图片需要权限)
使用网络图片时,需要申请权限ohos.permission.INTERNET。具体申请方式请参考权限申请声明。申请位置为entry>src>main>resources>module.json5文件中。
3.1.1
更多申请相关事项参见官方文档:访问控制授权申请
申请完网络权限后,就可以放心地使用网络图片作为image参数了。

3、资源文件类型的调用(使用$r(‘app.media.图片名’))
以下便是调用每个新建项目默认存在的图标图片icon.png:
3.3.1
运行效果:
3.3.2
4、引用其他路径下的资源

//Image组件调用其他路径下的图片:必须加扩展名
        Image($rawfile('bg.jpg'))

而且还需要注意,资源名不能包括中文。

三、组件的属性设置

1、链式语法
在同一行同时设定某个组件的多个属性,可以无限延伸下去。不过为了可读性,建议每设置一个属性换一行。

Text('声明式UI组件').fontSize(50).fontColor(Color.Green).fontWeight(FontWeight.Bold)

2、属性设置时做运算

//属性设置时做运算:偶数则将宽设置为200,奇数行则设置宽为300
 Image($rawfile('bg.jpg')).width(this.n%2 === 0 ? 200 : 300)

3、绑定事件
注意:需要在定义变量n时加上@State修饰,这表明当n值发生改变时,将重新渲染整个页面。

@State n: number = 7

//绑定事件,每点击一次就加1
        Text("财富:" + this.n + "W").fontSize(30)
        Button('点我++')
          .onClick(()=>{
            this.n++
          })

4、呈现效果
4.4.1

四、补充

1、使用组件的成员函数配置组件的事件方法

myClickHandler(): void {
  this.counter += 2;
}
...
Button('add counter')
  .onClick(this.myClickHandler.bind(this))

2、配置子组件

如果组件支持子组件配置,则需在尾随闭包"{…}"中为组件添加子组件的UI描述。Column、Row、Stack、Grid、List等组件都是容器组件。(在这里,Column组件可以用{space:50}来增加行距)

Column({space:50}) {
  Text('Hello')
    .fontSize(100)
  Divider()
  Text(this.myText)
    .fontSize(100)
    .fontColor(Color.Red)
}

3、多组件嵌套

容器组件均支持子组件配置,可以实现相对复杂的多级嵌套。

Column() {
  Row() {
    Image('test1.jpg')
      .width(100)
      .height(100)
    Button('click +1')
      .onClick(() => {
        console.info('+1 clicked!');
      })
  }
}

http://lihuaxi.xjx100.cn/news/1846666.html

相关文章

【Qt5】什么时候会触发paintEvent事件

2023年11月29日,周三上午 paintEvent事件是Qt框架中的一个重要事件,它在需要重新绘制部件时被触发。 常见情况下,paintEvent会在以下几种情况下被触发: 窗口初始化和显示: 当窗口首次被创建、显示或者窗口被覆盖、最…

万界星空科技生产管理mes系统种的工艺确认流程

MES工艺流程是制造执行系统的核心部分,它涵盖了整个生产过程,包括物料管理、生产计划、生产执行、质量管理、维修保养等方面,可以有效地提高生产效率和产品质量。 一、确认追溯模型: 以工艺文件为确认对象,以产品生产…

Sentaurus TCAD半导体器件入门常用案例合集

Sentaurus TCAD是用于模拟半导体器件和工艺的工具之一,可以帮助工程师设计电路元件,优化半导体工艺和器件性能。主要功能包括:半导体器件建模(用于建立各种半导体器件的物理模型工艺模拟)、半导体器件的制造工艺模拟&a…

Vue学习笔记-Vuex基本使用

基本使用 初始化数据、配置actions、mutations,操作文件/store/index.js //index.js文件用于创建Vuex中最为核心的store对象 import Vue from vue import Vuex from vuex Vue.use(Vuex) //actions对象用于响应组件中的动作,专门负责业务逻辑 const actions {//函数…

ground truth 在深度学习任务中代表的是什么意思?

1、概念 在深度学习领域,ground truth (中文意思是“地面真实值”或“基准真实值”,简单理解就是真实值) 是指用于训练和评估模型的准确标签或数据。它是机器学习算法的参考标准,用于衡量模型的性的和判断模型的准确性,本文将介绍…

超声波眼镜清洗机都有哪些是比较值得入手的?眼镜清洗机推荐

在当今社会,眼镜已经成为了我们日常生活中不可或缺的一部分。然而,眼镜的清洗问题却一直困扰着许多人。眼镜上的污垢和油脂不仅影响其美观,更重要的是可能会对眼睛的健康产生不良影响。因此,我们需要一种高效的眼镜清洗机来帮助我…

你知道显卡型号上的数字是什么意思吗?数字越大就越好吗?

大家好,欢迎来到我们的显卡探秘之旅!今天,我们将一探究竟——显卡型号上的数字到底是啥意思?是不是数字越大,显卡就越NB?别急,跟着小编一起揭开这个神秘的数字面纱! Q1 显卡的基本概…

戴尔科技推出全新96核Precision 7875塔式工作站

工作站行业一直是快节奏且充满惊喜的。在过去25年中,戴尔Precision一直处于行业前沿,帮助创作者、工程师、建筑师、研究人员等将想法变为现实,并对整个世界产生影响。工作站所发挥的作用至关重要,被视为化不可能为可能的必要工具。如今,人工智能(AI)和生成式AI(GenAI)的浪潮正在…