理解 ArkUI 核心组件、布局系统、列表优化和样式复用机制,搭建出完整的应用界面。
ArkUI 提供了一套丰富的内置组件,掌握它们是构建 UI 的第一步
Text 是 ArkUI 中最常用的组件,用于展示文本内容。
fontSize、fontWeight、fontColor、textAlign、maxLines、textOverflow、lineHeight
Button 支持多种样式和交互状态,是用户操作的核心入口。
ButtonType.Normal — 直角矩形,适合自定义圆角ButtonType.Capsule — 胶囊形(两端半圆),最常见ButtonType.Circle — 圆形,适合图标按钮
Image 支持加载本地资源和网络图片,是应用中不可或缺的展示组件。
Cover — 裁剪填充(类似 background-size: cover)Contain — 完整显示(类似 contain)Fill — 拉伸填充(可能变形)Auto — 默认,自动选择合适模式
TextInput 是用户输入的入口,ArkUI 提供了丰富的输入控制能力。
Normal(默认)、Password(密码)、Email(邮箱)、Number(数字)、PhoneNumber(电话)
ArkUI 的布局系统基于弹性盒子模型,理解它们是控制界面排布的关键
Column 是 ArkUI 最常用的布局容器,子组件从上到下依次排列。
alignItems — 水平方向对齐(Start / Center / End / Stretch)justifyContent — 垂直方向分布(Start / Center / End / SpaceBetween / SpaceAround / SpaceEvenly)
Row 与 Column 类似,但子组件从左到右水平排列。
justifyContent 控制主轴,alignItems 控制交叉轴。
Flex 是 Column/Row 的底层实现,提供更细粒度的弹性控制。
flex 属性。父容器中所有子组件的 layoutWeight 值之和决定了各自占比。非常适合自适应布局。
Grid 提供行列对齐的网格布局能力,适合宫格导航、图片墙等场景。
columnsTemplate('1fr 1fr 1fr') — 3 列等宽columnsTemplate('1fr 2fr') — 第 1 列占 1 份,第 2 列占 2 份columnsTemplate('100px 1fr') — 第 1 列固定 100px,其余自适应rowsAuto(true) — 行数自适应内容
实际应用中,Column、Row、Flex 通常嵌套使用来构建复杂 UI。
List 是 ArkUI 中最核心的数据展示组件,配合 LazyForEach 实现高性能长列表
List 组件配合 ForEach 是最常见的数据列表实现方式。
space — 列表项间距divider — 分割线样式scrollBar — 滚动条显示策略edgeEffect — 边缘回弹效果(Spring / None)listDirection — 列表方向(Vertical / Horizontal)
当数据量很大(几百条以上)时,ForEach 会导致所有列表项同时渲染,性能下降。LazyForEach 通过懒加载机制只渲染可视区域内的子组件。
实际应用中,列表通常需要支持下拉刷新和上拉加载更多功能。
onReachEnd 在列表滑动到底部时触发,适合做"加载更多"。Refresh 组件提供系统级的下拉刷新动画。
ArkUI 提供多种样式复用机制,帮助你编写更干净、更高效的 UI 代码
ArkUI 中的每个组件都支持链式调用设置样式属性。
@Styles 用于定义可在多个组件中复用的通用样式方法。适合没有参数变化的固定样式。
struct 内部定义,且不能接收参数。适合纯样式复用。
@Extend 可以为目标组件类型扩展自定义样式方法,且支持参数传递。
@Extend — 支持参数、可全局定义、绑定到特定组件类型@Styles — 无参数、只能在 struct 内定义、任何组件可用@Extend 当需要参数化样式时。
@Builder 用于定义可复用的 UI 片段,比样式更进一步——它可以包含完整的 UI 结构和逻辑。
@Builder 方法,让 build() 保持清晰。配合 @BuilderParam 可实现类似 Vue Slot 的插槽机制。
理解不同机制的适用场景,选择合适的复用方式。
| 机制 | 适用范围 | 参数 | 定义位置 |
|---|---|---|---|
| 链式调用 | 一次性的简单样式 | — | 直接使用 |
| @Styles | 通用样式复用(无参数) | ❌ | struct 内部 |
| @Extend | 组件特定的参数化样式 | ✅ | 全局任意位置 |
| @Builder | 完整 UI 片段复用 | ✅ | struct 内部 |
@Styles;带参数用 @Extend;复杂 UI 片段用 @Builder。层层递进,保持代码清爽。
综合运用本周所学,写出一个有完整交互的待办应用
用 ArkUI 实现一个简洁的待办清单 App,包含以下功能:
Index.ets,运行到模拟器体验效果。然后试着添加 删除功能(长按删除)和 分类标签(全部/待完成/已完成)来加深理解。
完成以下事项,即可进入第3周的学习