1. ArkTS 简介
ArkTS 是 HarmonyOS 应用开发中的一种编程语言,它结合了 TypeScript 的类型检查和声明式 UI 描述方式,帮助开发者更高效地构建用户界面。
2. 声明式 UI 描述
ArkTS 使用声明式语法来定义 UI 结构,通过组件、属性和事件配置实现用户界面开发。
2.1 创建组件
ArkTS 提供了丰富的内置组件,如 Text
、Button
、Image
等,使用这些组件可以快速构建界面。
@Entry
@Component
struct SimpleUI {
build() {
Text("欢迎使用 ArkUI")
.fontSize(24)
.textAlign(TextAlign.Center);
}
}
2.2 配置属性
通过链式方法为组件配置属性,使 UI 元素具有特定的样式或行为。
Text("设置字体大小与颜色")
.fontSize(20)
.textColor(Color.Red)
.italic(true);
2.3 配置事件
为组件绑定事件处理器以响应用户交互。
@State myTest: string = "world";
Text(`hello ${this.myTest}`)
.fontSize(50);
Button('点我啊')
.onClick(()=>{
this.myTest = 'ArkTS'
})
2.4 配置子组件
使用容器组件如 Column
、Row
将多个子组件组合在一起。
Column() {
Text("标题 1").fontSize(18);
Text("标题 2").fontSize(16);
}
3. 自定义组件
在 ArkTS 中,可以通过定义自定义组件来实现代码的复用与模块化。
/*
* 封装组件,并调用
* */
@Entry
@Component
struct Page{
build() {
Column(){
// 调用组件,显示内容
Header()
}
}
}
// 创建自定义组件
@Component
export struct Header{
build() {
Column(){
Text('Header')
.width('100%') // 宽度
.height(60) // 高度
.backgroundColor(Color.Red) // 背景色
.textAlign(TextAlign.Center) // 对齐方式居中
}
}
}
使用其他文件中已经封装好的组件
/*
调用其他 文件中 export 的组件
*/
import { Header} from './Page'
@Entry
@Component
struct Page1 {
build() {
Column(){
Header()
}
}
}
4. 通用属性
ArkTS 提供了大量通用属性,用于设置组件的样式和布局。
属性 | 描述 | 示例 |
---|---|---|
fontSize() |
设置字体大小 | Text().fontSize(16) |
textColor() |
设置文字颜色 | Text().textColor(Color.Red) |
width() |
设置宽度 | Button().width(200) |
height() |
设置高度 | Button().height(50) |
padding() |
设置内边距 | Column().padding(10) |
margin() |
设置外边距 | Row().margin(15) |
5. 尺寸设置:px 与 vp 的区别
单位 | 描述 | 应用场景 |
---|---|---|
px |
物理像素单位,表示屏幕上的真实像素大小。 | 精细调整组件尺寸时使用 |
vp |
虚拟像素单位,适应不同分辨率的屏幕。 | 适用于跨设备 UI 设计 |
6. 开发示例:计数器组件
代码示例
@Entry
@Component
struct CounterComponent {
@State count: number = 0;
build() {
Column() {
Text(`当前计数:${this.count}`)
.fontSize(24)
.textAlign(TextAlign.Center);
Button("点击增加计数")
.onClick(() => {
this.count++;
})
.width(200)
.height(50);
}
}
}
代码解析
语法/方法 | 描述 |
---|---|
@State |
定义组件状态,状态变化时自动刷新 UI |
this.count++ |
按钮点击时增加计数器数值 |
.fontSize() |
设置文字的字体大小 |
.onClick() |
设置按钮点击事件 |
凡是过去,皆为序章;凡是未来,皆有可期。