从 0 到 1:用 ArkUI 写出你的第一个鸿蒙 App 界面
🚀 鸿蒙开发入门必看!30 分钟掌握 ArkUI 界面开发
你是不是刚开始学习 鸿蒙开发,却不知道如何下手?别担心!这篇文章将带你:
✨ 从零认识 ArkUI 组件和布局
✨ 学会用 Text、Button、Image 等组件快速搭建界面
✨ 通过完整案例,实战一个小型 新闻卡片界面
读完之后,你就能快速写出自己的第一个鸿蒙应用界面,真正做到 学完即用 💻!
✨ 本文基于课堂笔记 + 实操经验整理,适合零基础入门鸿蒙 ArkUI 界面开发的同学。内容涵盖 开发环境搭建、基础组件、容器组件、属性方法、常见问题处理、完整案例。配合示例代码,帮助你快速掌握鸿蒙应用界面开发!同时,每个知识点会附上定义和个人理解,便于加深印象。
ArkUI概述
ArkUI是华为为HarmonyOS应用开发设计的声明式UI开发框架,提供简洁高效的UI描述语法与状态管理机制,支持跨设备适配。其核心特点包括声明式编程、响应式数据绑定、高性能渲染及统一的开发范式。
核心特性
声明式开发:通过TS/JS或eTS(extended TypeScript)语言以接近自然语义的方式描述UI布局与交互逻辑,减少冗余代码。
跨平台适配:基于“一次开发,多端部署”理念,自动适配手机、平板、智能穿戴等不同设备屏幕尺寸与交互模式。
高性能渲染:采用轻量级渲染引擎和高效的差异更新算法(如Virtual DOM),确保复杂界面流畅渲染。
状态管理:内置响应式数据绑定机制,UI随数据变化自动更新,简化双向数据流处理。
开发语言支持
eTS:ArkUI主推语言,扩展了TypeScript的装饰器能力,支持@Component、@State等注解。
JS/TS:兼容标准JavaScript/TypeScript语法,适合快速迁移现有Web项目。
典型应用场景
多设备协同应用:如分布式音乐播放器,界面自适应不同终端。
高性能动画:利用ArkUI的动画API实现流畅转场效果。
实时数据展示:通过状态管理快速更新股票行情、天气信息等动态内容。
代码示例(eTS语法)
@Component
struct HelloWorld {
@State message: string = 'Hello ArkUI!'
build() {
Column() {
Text(this.message)
.fontSize(20)
Button('Click Me')
.onClick(() => {
this.message = 'Button Clicked!'
})
}
}
}
学习资源
官方文档:HarmonyOS开发者官网提供完整ArkUI组件库与API指南。
社区支持:开源社区如Gitee、CSDN有大量实战案例与问题讨论。
ArkUI通过降低UI开发复杂度,助力开发者高效构建HarmonyOS全场景应用。
🛠️ 一、开发环境准备
定义:鸿蒙系统开发主要依赖官方 IDE —— DevEco Studio,基于 ArkTS(方舟 TypeScript)语言来构建 UI 界面。
个人理解:就像 Android 需要 Android Studio 一样,鸿蒙开发的“家”就是 DevEco Studio,一切代码、调试、模拟器都在这里完成。
示例:Hello ArkUI
@Entry
@Component
struct Index {
@State message: string = "Hello ArkUI!"
build() {
Row() {
Column() {
Text(this.message)
.fontSize(20)
.fontWeight(FontWeight.Bold)
.fontColor(Color.Blue)
}
}
}
}
📐 二、布局基础
定义:ArkUI 界面由组件构成,分为 基础组件(如 Text、Image)和 容器组件(如 Row、Column,用来组织布局)
个人理解:组件就像“乐高积木”,每个小方块都有特定功能;容器则像“底板”,决定乐高积木怎么摆放(横排还是竖排)。
请实现右侧的实例,在界面上表现出来
@Entry
@Component
struct Demo1 {
//构造 + 界面
build() {
// 布局思路:先排版,再内容
Column() {
Text('小说简介').fontSize(24).fontWeight(FontWeight.Bold)
Text('都市')
Text('生活')
Text('情感')
Text('男频')
}
}
}
🎨 三、常见属性方法
1.组件属性方法
定义:属性方法用于控制组件的样式和行为,例如宽高、字体大小、颜色、溢出效果。
个人理解:属性方法相当于“化妆工具”,同一个人(组件)可以通过不同化妆手法(属性)展现不同的风格。
• .width(value):宽度
• .height(value):高度
• .backgroundColor(Color.xxx):背景色
• .fontSize(value):字体大小
• .fontWeight(FontWeight.Bold):加粗(数值取在100-900,默认400)
• .fontColor(Color.xxx):字体颜色
• .lineHeight(value):行高
• .textOverflow(TextOverflow.Ellipsis):溢出省略
• .maxLines(n):最大显示行数
例:在上一个例子的基础上,加入颜色和行高的设定。
@Entry
@Component
struct Demo2 {
build() { //布局思路:先排版
Column(){
Text('小说简介')
.width('100%')
.height(40)
.fontSize(20)
.fontWeight(700) //100-900的数字 加粗700 默认400
Row(){
Text('都市')
.width(150)
.height(60)//设置居中和每行的行高
.backgroundColor(Color.Orange)//设置颜色,可选预设
Text('生活')
.width(150)
.height(60)
.backgroundColor(Color.Pink)
Text('情感')
.width(150)
.height(60)
.backgroundColor(Color.Yellow)
Text('男频')
.width(150)
.height(60)
.backgroundColor(Color.DeepOrange)
}
.width('100%')
}
.width('100%')
}
2.文本颜色
例:请完成右侧UI
3.文本溢出省略号
例:完成右侧文字溢出省略号
示例:溢出省略
// 构建界面的方法
build() {
Column() {
// 第一个文本组件,显示'HarmonyOS开发初体验'
Text('HarmonyOS开发初体验')
.width('100%') // 设置宽度为父容器的100%
.lineHeight(50) // 设置行高为50
.fontSize(20) // 设置字体大小为20
.fontWeight(FontWeight.Bold); // 设置字体为粗体
// 第二个文本组件,显示关于方舟开发框架的描述
Text('方舟开发框架(简称ArkUI)为HarmonyOS应用的UI开')
.width('100%') // 设置宽度为父容器的100%
.lineHeight(24) // 设置行高为24
.textOverflow({
overflow: TextOverflow.Ellipsis // 设置文本溢出时显示省略号
})
.maxLines(1); // 设置最大显示行数为1,配合textOverflow实现省略效果
}
.width('100%'); // 设置Column容器的宽度为父容器的100%
}
}
🖼️ 四、Image 图片组件
定义:Image 用于在界面中加载和显示图片,可以是网络图片或本地资源。
个人理解:就像给文章插图一样,图片是 UI 界面的“眼睛”,让界面更直观。
• 加载网络图片:
Image('https://www.itheima.com/logo.png')
.width(100)
.height(100)
• 加载本地图片(需放在 media 目录):
Column() {
Image($r('app.media.product'))
.width(120)
.height(120)
}
⌨️ 五、输入框与按钮
定义:TextInput 提供文本输入功能,Button 用于点击交互,常见于表单或登录页面。
个人理解:输入框是“对话窗口”,按钮是“执行开关”,二者配合能实现人机交互的核心功能。
特殊情况
示例:登录界面
@Entry
@Component
struct LoginPage {
build() {
Column({ space: 10 }) {
TextInput({ placeholder: '请输入用户名' })
.width('80%')
TextInput({ placeholder: '请输入密码', type: InputType.Password })
.width('80%')
Button('登录')
.onClick(() => { console.log('登录成功') })
}
.width('100%')
.height('100%')
.padding(20)
}
}
📰 六、案例实战:新闻信息卡片
定义:通过多个组件的组合,实现一个实际界面效果(新闻卡片 UI),展示标题、来源、评论数和简介。
个人理解:案例就像“练武”,单个动作(组件)练熟后,必须组合成“套路”(完整 UI)才能真正上手。
@Entry
@Component
struct NewsCard {
build() {
Column() {
Text('今日头条')
.fontSize(24)
.fontWeight(FontWeight.Bold)
.fontColor(Color.Red)
Row() {
Text('新华社')
.fontColor('#3c3c3c')
Text('4680评论')
.fontColor('#a1a1a1')
}.width('100%')
Text('华为 HarmonyOS 正式版本上线,性能全面提升...')
.width('100%')
.fontSize(18)
.lineHeight(26)
.textOverflow(TextOverflow.Ellipsis)
.maxLines(2)
}
.padding(20)
.width('100%')
}
}
🏆 七、总结
通过本文我们学习了:
1. 🛠️ 开发环境(定义:工具和语言;个人理解:鸿蒙的“家”)
2. 📐 组件体系(定义:UI 的基本单元;个人理解:像乐高积木)
3. 🎨 属性方法(定义:控制样式;个人理解:化妆工具)
4. 🖼️ 图片组件(定义:加载图片;个人理解:UI 的眼睛)
5. ⌨️ 输入框与按钮(定义:交互核心;个人理解:对话 + 开关)
6. 📰 案例实战(定义:综合应用;个人理解:练武套路)
学习路径:从 Text → 容器组件 → Image → 输入框与按钮 → 实战案例。
下一篇文章我将带大家学习 ArkUI 页面跳转与路由管理,敬请期待!🔥
更多推荐
所有评论(0)