鸿蒙 (HarmonyOS) 内置组件分类
鸿蒙(HarmonyOS)组件分为三大类:基础组件(如Text、Button)是界面最小单元,直接展示内容和交互;容器组件(如Column、List)组织布局结构,管理子组件排列;媒体组件(如Video、Canvas)专用于多媒体处理。这种层次化设计先通过容器搭建骨架,再用基础组件填充内容,最后嵌入媒体功能,使UI开发更具条理性。
·

我的划分将遵循您提出的基础组件、容器组件和媒体组件三大类,并为您详细阐述每一类的定义、包含的组件及其典型使用场景。
鸿蒙 (HarmonyOS) 内置组件分类
| 类别 | 核心职责 | 典型组件 | 比喻 | 文档依据 |
|---|---|---|---|---|
| 基础组件 | 构成界面的最小视觉和交互单元,是内容的直接承载者。 | Text, Button, Image, Input, Slider, Switch, Progress |
砖块、颜料、文字 | 《基础组件_*.pdf》 等多份文档 |
| 容器组件 | 组织和管理组件布局与结构,提供排列、嵌套、滚动等能力,本身通常是“不可见”的。 | Column, Row, Stack, List, Tabs, GridRow, Swiper |
脚手架、画布、文件夹 | 《容器组件_.pdf》, 《添加容器_.pdf》 |
| 媒体组件 | 专门用于播放、展示或控制多媒体内容的特定功能单元。 | Video, Canvas |
电视机、留声机、画板 | 《Video_*.pdf》, 《使用画布绘制自定义图形.pdf》 |
一、基础组件 (Basic Components)
- 定义:视图的原子单位。它们是用户能直接看到和交互的最小元素,用于展示文本、图片,或接收用户输入指令。它们通常作为叶子节点存在于组件树中,不再包含其他组件。
- 核心特征:直接承载内容、提供独立交互。
- 包含组件(根据文档列举):
- 文本展示:
Text,Span,Marquee(跑马灯),RichText,Qrcode,Rating(评分) - 图像展示:
Image,ImageAnimator(帧动画) - 输入控制:
Button,Toggle(切换按钮),Slider(滑块),Switch(开关),Input,TextArea,Search,Picker,DatePicker - 进度指示:
Progress,LoadingProgress - 图表:
Chart - 分隔:
Divider(分割线)
- 文本展示:
- 典型使用场景:
Column() { Text('Hello World') // 文本组件 .fontSize(20) Image($r('app.media.icon')) // 图像组件 .width(100) .height(100) Button('Click Me') // 按钮组件 .onClick(() => { // 处理点击事件 }) Slider({ value: 50, min: 0, max: 100 }) // 滑块组件 }
二、容器组件 (Container Components)
- 定义:组件的组织者。它们本身通常没有可见内容(或仅有简单的背景、边框),其主要作用是定义布局规则,对子组件进行排列、分组、滚动或切换管理。它们是构建复杂界面结构的骨架。
- 核心特征:管理布局、容纳子组件、提供交互框架。
- 包含组件(根据文档列举):
- 线性布局:
Column(垂直排列),Row(水平排列),Flex(弹性布局) - 层叠布局:
Stack(堆叠) - 列表布局:
List,ListItem,ListItemGroup,WaterFlow(瀑布流) - 导航布局:
Tabs,TabContent,Swiper(轮播),Navigation,Stepper(步骤器) - 响应式栅格布局:
GridRow,GridCol - 相对布局:
RelativeContainer - 特殊容器:
Scroll(滚动),Refresh(下拉刷新),Popup(弹窗),Dialog(对话框),SideBarContainer(侧边栏)
- 线性布局:
- 典型使用场景:
// 使用 Column 垂直排列子组件 Column() { // 使用 Row 水平排列子组件 Row() { Text('Left') Text('Right') } // 使用 Stack 层叠子组件(如文字在图片上) Stack() { Image($r('app.media.bg')) Text('Watermark') } // 使用 List 渲染长列表 List() { ForEach(this.itemList, (item) => { ListItem() { Text(item.name) } }) } }
三、媒体组件 (Media Components)
- 定义:多媒体内容的专用载体。这类组件功能高度特化,专注于处理复杂的音视频播放或图形绘制,内部封装了强大的媒体引擎或渲染能力。
- 核心特征:功能专一、处理复杂媒体流、与系统底层媒体服务紧密交互。
- 包含组件(根据文档列举):
- 视频播放:
Video(支持播放、暂停、控制等) - 图形绘制:
Canvas(提供画布,可通过CanvasRenderingContext2D绘制自定义图形、动画)
- 视频播放:
- 典型使用场景:
// 播放视频 Video({ src: ' https://example.com/sample.mp4 ', controller: this.videoController }) .width('100%') .height(300) // 使用画布绘制图形 Canvas(this.context) .width('100%') .height(300) .onReady(() => { this.context.beginPath() this.context.arc(100, 100, 50, 0, 6.28) this.context.stroke() })
总结与补充说明
这种分类方式清晰地体现了鸿蒙UI开发的层次化设计思想:
- 容器组件搭建页面的骨架和结构(Layout)。
- 基础组件作为肌肉和皮肤,填充到骨架中,提供具体的内容和交互(Content & Interaction)。
- 媒体组件则是嵌入其中的功能器官,负责处理特定的高性能任务(Specialized Function)。
关于其他组件:您提供的文档中还提到了SVG组件(如svg, circle, path)和栅格组件(grid-container等)。它们可以按其功能归入以上分类:
SVG组件用于绘制矢量图形,可视为更强大的基础组件。grid-container是用于布局的,应归为容器组件。
这种分类方法有助于开发者在构建界面时,更有条理地选择合适的工具,先规划布局(容器),再填充内容(基础),最后嵌入复杂功能(媒体)。
更多推荐



所有评论(0)