当前位置: 首页 > news >正文

鸿蒙期末总结

一、概念

HarmonyOS应用关键概念:元服务和App的关系

App具有手动下载安装、包大小无限制、应用内或应用市场更新、全量功能等特征,可使用全量API
元服务具有免安装、包大小有限制、即用即走、轻量化等特征,只能使用“元服务API集”
在这里插入图片描述

鸿蒙的三大技术理念:一次开发,多端部署;可分可合,自由流转;统一生态,原生智能
技术理念核心目标技术支撑典型应用场景
一次开发,多端部署降低多端开发成本统一开发框架、跨平台编译系统一套代码适配手机、平板、智能手表等
可分可合,自由流转实现跨设备资源与任务动态调度分布式软总线、任务调度技术视频/文件在不同设备间无缝流转
统一生态,原生智能构建统一生态并赋予设备智能能力统一内核、AI引擎、分布式数据管理设备根据用户习惯自动优化使用体验

二、DevEco Studio的使用

1. 编辑器的代码阅读功能有哪些?
  • 代码高亮:支持关键字、字符串等语法高亮,可在File > Settings > 编辑器 > 配色方案自定义颜色。
  • 快速跳转:按住Ctrl点击类、方法名可跳转到定义处,多引用时支持弹窗选择。
  • 代码格式化:用Ctrl+Alt+L格式化代码,通过//@formatter:off/on排除指定代码块。
  • 代码折叠:点击侧边栏按钮或右键选择折叠方式(如递归折叠)。
  • 快速注释:选中代码后按Ctrl+/添加/取消行注释。
2. 如何实现ArkUI组件的预览?
  • 页面预览:通过@Entry装饰组件,在预览器中直接显示页面效果。
  • 组件预览:用@Preview装饰自定义组件,单个文件最多10个,支持实时预览但不支持动态数据。
3. 多设备预览的实现步骤是什么?
  1. module.json5中配置deviceTypes(如["phone", "tablet"])。
  2. 打开预览器的Profile Manager,自定义设备分辨率和语言。
  3. 开启Multi-profile preview开关,同时查看多设备显示效果。
4. 模拟器的常用操作方式有哪些?
  • 交互操作:滑动屏幕(鼠标拖拽)、输入文字(点击输入域后键盘输入)、安装应用(拖HAP包到屏幕)。
  • 工具栏功能:旋转屏幕、调节音量、截屏、模拟电池/GPS状态、摇一摇操作。
5. 模拟器与真机的核心差异有哪些?
  • 不支持功能:蜂窝网络、拍照录像、指纹识别、x86版本的华为推送和花瓣地图。
  • 支持功能:ArkUI组件、WiFi连接、本地数据管理、HiLog日志。
6. 编辑器快捷键汇总
功能快捷键说明
代码格式化Ctrl+Alt+L按预设规范格式化代码
优化导入Ctrl+Alt+O清除未使用的import语句
快速注释/取消注释Ctrl+/行注释切换
生成构造器/getsetAlt+Insert快速生成类成员方法
代码跳转Ctrl+点击跳转到定义处
7. 模拟器支持的设备类型与平台
设备类型支持平台API版本
手机、折叠屏Windows x86、Mac x86/armAPI 11、12
平板、2in1Windows x86、Mac x86/armAPI 11、12
8. 预览器核心功能对比
功能页面预览组件预览
装饰器@Entry@Preview
动态数据支持支持不支持
单个文件限制1个最多10个
使用场景整体页面效果调试独立组件样式调试
9. 代码重构功能列表
功能说明
提取变量将表达式提取为常量
提取方法将代码块提取为新函数
优化导入合并/排序import语句,清除未使用项
重命名批量重命名变量/方法/类

三、ArkTS基础语法

1. 变量
[修饰符] 变量名[: 类型] [= 初始值];@State count: number = 0;          // 带修饰符、有类型、有初值
let name = "HarmonyOS";           // 无修饰符、有初值、类型推导
const PI: number = 3.14;          // 常量,有类型、有初值
submitArrow?: () => void;         // 可选函数类型属性

注意变量必须赋值,且若没有联合类型包括null时,不可赋值为null
以下是鸿蒙(HarmonyOS)开发中常用变量类型的总结(基于ArkTS语言体系):

类型名称说明示例
基本类型
number数值类型,包含整数和浮点数let num: number = 10;
string字符串类型,支持Unicode字符let str: string = "鸿蒙系统";
boolean布尔类型,值为truefalselet isReady: boolean = true;
null空值类型,表示变量无实际值let empty: null = null;
undefined未定义类型,变量声明未初始化时的默认值let uninit: undefined;
void无返回值类型,常用于函数声明function fn(): void { ... }
引用类型
Array<T>数组类型,元素类型由泛型T指定let arr: number[] = [1, 2, 3];
Object对象类型,包含键值对结构let obj: Object = { name: "鸿蒙" };
Function函数类型,用于声明函数变量或参数let func: (a: number) => string;
鸿蒙特化类型
ResourceStr字符串资源类型,用于引用工程中的字符串资源(如strings.json@Entry @Component struct Index {<br> @State str: ResourceStr = $r('app.string.hello');<br>}
ResourceColor颜色资源类型,用于引用工程中的颜色资源(如colors.jsonlet color: ResourceColor = $r('app.color.primary');
ResourceFile文件资源类型,用于引用工程中的文件资源(如图像、字体等)let img: ResourceFile = $r('app.media.icon');
装饰器关联类型
@State组件内部状态变量,状态变化触发UI更新(非严格数据类型,需配合装饰器使用)@State count: number = 0;
@Prop子组件接收父组件传递的属性变量@Prop name: string;
@Link双向绑定变量,父子组件状态同步@Link isActive: boolean;

详情见 鸿蒙开发 变量的定义和常用关键字属性总结

2. 函数

定义

function 函数名(参数列表): 返回类型 {// 函数体
}

函数定义方式汇总
=>后面跟的是函数的返回值,相当于return

方式示例说明
命名函数function add(a: number, b: number): number {...}标准命名形式
匿名函数const fn = function(a: number) { ... }函数作为变量赋值
箭头函数const fn = (a: number) => a * 2简洁形式,常用于回调
可选参数function greet(name?: string) { ... }参数可以不传
默认参数function greet(name: string = "Guest") { ... }传参为空时使用默认值
剩余参数function sum(...nums: number[]) { ... }不定数量参数
函数类型定义let fn: (x: number) => void声明函数类型变量
函数返回函数(高阶)function outer(): () => void { ... }返回一个函数

函数定义中涉及的关键点

特性说明
?参数可选
=参数默认值
...剩余参数
=>箭头函数(无 this 绑定)
类型注解参数与返回值都应明确类型(ArkTS 强类型)
可选链调用fn?.() 调用可选函数变量

常见用于函数的 @ 修饰符汇总

装饰器使用位置作用描述示例
@Builder函数表示该函数用于描述 UI 结构(ArkTS 的声明式 UI 构建核心)@Builder buildUI() { ... }
@Entry组件类/函数表示应用的入口组件或入口构建函数@Entry buildApp() { ... }
@Component函数/类声明这是一个组件定义(可视图结构)@Component struct MyButton {}
@Styles函数定义样式构建函数(搭配 @Builder@Styles styleFn() { ... }
@Preview函数在 DevEco Studio 中预览函数结果(仅开发预览用)@Preview previewUI() { ... }
@Provide函数/变量向下传递依赖注入数据@Provide('theme') getTheme() {}

详情见 鸿蒙开发-函数的定义总结

3. 装饰器
装饰器用途限制规则示例
组件定义
@Entry标记组件为页面入口,每个页面必须有且仅有一个@Entry组件- 必须在@Component类上使用
- 每个页面(.ets文件)只能有一个
- 通常位于顶层组件
typescript<br>@Entry<br>@Component<br>struct Index {<br> build() { ... }<br>}<br>
@Component声明类为ArkUI组件- 必须用于类声明
- 类必须包含build()方法定义UI结构
typescript<br>@Component<br>struct MyComponent {<br> build() { ... }<br>}<br>
状态管理
@State声明组件内部响应式状态变量,值变化触发UI刷新- 必须显式指定类型
- 必须初始化(如@State count: number = 0
- 只能在@Component类中使用
typescript<br>@State message: string = 'Hello';<br>
@Prop声明子组件接收父组件传递的单向数据(属性)- 必须显式指定类型
- 不能初始化(由父组件赋值)
- 子组件中不可修改(只读)
typescript<br>// 父组件<br><ChildComponent title="父数据" /><br>// 子组件<br>@Prop title: string;<br>
@Link声明双向绑定变量,与父组件状态同步- 必须显式指定类型
- 必须通过.link()方法初始化(如@Link value: number = this.parentValue.link()
- 父子组件均可修改
typescript<br>// 父组件<br>@State parentValue: number = 10;<br>// 子组件<br>@Link childValue: number = this.parentValue.link();<br>
@Provide声明向子组件树提供的共享数据- 必须显式指定类型
- 必须初始化
- 可在任意层级子组件中通过@Consume接收
typescript<br>// 祖先组件<br>@Provide theme: string = 'light';<br>// 子组件<br>@Consume theme: string;<br>
@Consume声明接收祖先组件通过@Provide提供的数据- 必须显式指定类型
- 不可初始化(自动关联@Provide
- 子组件中不可修改(只读)
typescript<br>@Consume sharedData: string;<br>
@StorageLink声明与本地存储(Preferences)绑定的响应式变量- 必须显式指定类型
- 必须通过@StorageLink('key')初始化
- 支持基本类型和简单对象
typescript<br>@StorageLink('userInfo') user: User = new User();<br>
@StorageProp声明从本地存储读取的单向数据- 必须显式指定类型
- 不可初始化(从存储读取)
- 组件内不可修改(只读)
typescript<br>@StorageProp('username') name: string;<br>
生命周期
@Builder标记函数作为UI构建器,用于封装重复UI逻辑- 必须用于函数声明
- 函数返回类型必须为void
- 函数内部必须调用UI组件
typescript<br>@Builder<br>Header() {<br> Text('标题').fontSize(20)<br>}<br>
自定义组件
@Extend标记组件扩展另一个组件的属性和方法- 必须用于类声明
- 被扩展的组件必须使用@Component装饰器
typescript<br>@Component<br>struct BaseComponent { ... }<br>@Extend(BaseComponent)<br>struct ExtendedComponent { ... }<br>
@CustomDialog声明自定义对话框组件- 必须用于类声明
- 类必须包含build()方法定义对话框内容
typescript<br>@CustomDialog<br>struct MyDialog {<br> aboutToAppear() { ... }<br> build() { ... }<br>}<br>
@Preview声明组件预览,用于DevEco Studio预览面板展示- 必须用于类声明
- 类必须使用@Component装饰器
- 不影响实际运行逻辑
typescript<br>@Preview<br>@Component<br>struct PreviewComponent {<br> build() { ... }<br>}<br>

详情见 鸿蒙期末复习-装饰器篇

三、框架

3.1. 多Module设计机制核心特性
  1. 模块化开发

    • 设计理念:将应用功能按模块拆分,每个Module独立包含源代码、资源、第三方库及配置文件,支持独立编译,实现松耦合的开发模式。
    • 优势:简化复杂应用的开发流程,便于团队协作、功能迭代与维护扩展。
  2. 多设备适配

    • 设备类型标注:每个Module可指定支持的设备类型(如手机、平板、智能穿戴等)。
    • 分发策略:应用市场根据设备类型筛选匹配Module,实现精准部署,优化不同设备的资源占用与功能适配。
1. Ability类型Module(功能实现模块)
类型作用编译产物特性
entry Module应用主模块,包含入口界面、图标及核心功能entry类型HAP每个设备的应用包只能有一个entry HAP,是应用启动的入口。
feature Module动态特性模块,实现可按需加载的功能(如插件、扩展功能)feature类型HAP可包含多个,按需集成到应用中,提升安装包轻量化与功能灵活性。
  • HAP包(Harmony Ability Package):Ability类型Module的编译产物,是应用安装的基本单位,可独立运行。
2. Library类型Module(代码与资源共享模块)
类型编译产物作用特性
Static Library.har(静态共享包)封装可复用的代码与资源,被其他Module引用时直接嵌入目标包。编译时静态链接,包体积较大,但运行效率高。
Shared Library.hsp(动态共享包)
.har(接口描述文件)
动态共享代码与资源,运行时按需加载,多个Module可共享同一实例。编译生成.hsp(包含实现)和.har(包含接口),引用时通过.har调用.hsp功能,降低包体积。
  • HAR(Harmony Archive):静态共享包,用于封装可复用的模块资源。
  • HSP(Harmony Shared Package):动态共享包,支持运行时动态加载,提升应用模块化能力。
    在这里插入图片描述
    在这里插入图片描述
    更多详见 期末考试复习总结-《应用程序框架基础》
3.2. UIAbility的生命周期

在这里插入图片描述
在这里插入图片描述
(1)Create状态
• Create状态为UIAbility实例创建完成时触发,系统会调用onCreate()回调。可以在该回调中进行页面初始化操作,例如变量定义、资源加载等。
(2)WindowStageCreate和WindowStageDestroy状态
• UIAbility实例创建完成之后,在进入Foreground之前,系统会创建一个WindowStage。
(3)WindowStageWillDestroy状态
(4)Foreground和Background状态
• onForeground()回调,在UIAbility切换至前台时触发。
• onBackground()回调,在UIAbility切换至后台时候触发。
• 例如应用在使用过程中需要使用用户定位时,假设应用已获得用户的定位权限授权。在UI显示之
前,可以在onForeground()回调中开启定位功能,从而获取到当前的位置信息。
• 当应用切换到后台状态,可以在onBackground()回调中停止定位功能,以节省系统的资源消耗。
(5)Destroy状态
• Destroy状态在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的
保存等操作。
在这里插入图片描述

3.3.组件启动模式

UIAbility的启动模式是指UIAbility实例在启动时的不同呈现状态。针对不同的业务场景,系统提供
了三种启动模式:
• singleton(单实例模式)
singleton启动模式为单实例模式,也是默认情况下的启动模式。调用startAbility()方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用系统中的UIAbility实例。系统中只存在唯一一个该UIAbility实例,即在最近任务列表中只存在一个该类型的UIAbility实例。
• multiton(多实例模式)
multiton启动模式为多实例模式,每次调用startAbility()方法时,都会在应用进程中创建一个新的该类型UIAbility实例。即在最近任务列表中可以看到有多个该类型的UIAbility实例。
• specified(指定实例模式)
specified启动模式为指定实例模式,针对一些特殊场景使用(例如文档应用中每次新建文档希望都能新建一个文档实例,重复打开一个已保存的文档希望打开的都是同一个文档实例)。

3.4.Page Ability 生命周期

详情见 鸿蒙考试-Ability生命周期篇

生命周期阶段对比

  1. UIAbility(框架层组件)

    • 鸿蒙应用框架的核心组件,负责管理应用的窗口、生命周期及跨设备能力(如多窗口、跨端迁移)。
    • 是系统调度的基本单元,每个UIAbility对应一个独立的任务窗口。
  2. Page Ability(UI层页面)

    • 基于ArkUI框架的页面组件,是UIAbility的具体实现,负责页面UI的渲染和交互逻辑。
    • 属于UIAbility的内部页面管理范畴,生命周期受UIAbility控制。
UIAbility生命周期Page Ability生命周期联系区别
Create(onCreate)onInitUIAbility创建时触发Page的初始化,两者均用于资源初始化(变量、监听注册)。UIAbility侧重组件级资源加载,Page侧重页面级数据初始化。
WindowStageCreateonReadyWindowStage创建完成后,Page的UI加载完成,可动态修改布局。UIAbility关注窗口创建,Page关注UI渲染完成。
Foreground(onForeground)onShow + onActiveUIAbility切换至前台时,Page先显示(onShow)后获取焦点(onActive)。UIAbility的前台状态对应Page的“可见且可交互”,Page细分了显示与焦点状态。
Background(onBackground)onInactive + onHideUIAbility切后台时,Page先失去焦点(onInactive)后隐藏(onHide)。UIAbility的后台状态对应Page的“不可见或不可交互”,Page细分了焦点与隐藏状态。
Destroy(onDestroy)onDestroyUIAbility销毁时,Page随之销毁,均用于释放资源(注销监听、保存数据)。UIAbility销毁会触发Page销毁,Page无法独立于UIAbility存在。
3.5.配置文件

主要配置文件概述

配置文件名称存储位置主要作用
app.json5项目根目录应用全局配置,定义应用基本信息(如包名、版本、模块列表等)
module.json5各模块根目录(如entry/src/main模块级配置,声明模块能力(UIAbility、服务等)、权限、设备支持类型等
build-profile.json5项目根目录build文件夹构建配置,定义编译参数、签名信息、产物输出路径等
entry.json(可选)部分旧项目早期版本配置文件,现逐步被module.json5替代
1. app.json5 常用选项
字段名称所属层级作用描述
app.nameapp应用显示名称
app.packageapp应用包名(唯一标识)
app.versionapp应用版本信息(codename
modules根层级定义应用包含的模块列表,每个模块需指定类型(如entry)和路径
deviceConfig根层级设备相关配置(如不同设备的差异化参数)
2. module.json5 常用选项
字段名称所属层级作用描述
abilitiesmodule声明模块中的UIAbility组件,包含名称、入口路径、图标等信息
deviceTypesmodule标识模块支持的设备类型(如phonetabletwearable等)
requestPermissionsmodule声明应用需要申请的系统权限(如定位、存储等)
namemodule模块名称(如entry
descriptionmodule模块描述信息
distromodule模块分发配置(如是否为系统模块)
3. build-profile.json5 常用选项
字段名称所属层级作用描述
buildOption根层级构建选项,包含编译参数、产物类型(app/hap)、签名配置引用等
signingConfigs根层级签名配置,存储证书和密钥信息(调试版和发布版)
targets根层级构建目标配置(如编译平台、ABI类型)
outputPathbuildOption构建产物输出路径
compileSdkVersionbuildOption编译使用的SDK版本
targetSdkVersionbuildOption目标SDK版本(影响API兼容性)
3.6. 一些规定
规则类型具体规则限制说明示例/注意事项
声明式UI构建(@Builder)禁止使用普通for循环,需用List.forEach循环组件(如ForEach)。声明式UI要求UI可重建,普通循环无法被框架追踪状态变化,可能导致UI更新异常。typescript<br>// 错误:build中不能用for<br>for (let i = 0; i < 5; i++) {}<br>// 正确:<br>[1,2,3].forEach(item => {})<br>// 或使用ForEach组件<br><ForEach elements={list} item={item => <Text>{item}</Text>}></ForEach>
函数定义自定义UI构建函数必须使用@Builder装饰,禁止普通函数。@Builder装饰器确保函数在UI状态变化时可被框架触发重建,普通函数无法参与UI更新流程。typescript<br>// 错误:<br>function CommonFunc() {}<br>// 正确:<br>@Builder MyBuilder() {}
状态变量声明组件内状态变量必须使用@State@Link@Prop等装饰器,禁止普通变量。装饰器用于标记状态依赖关系,框架通过装饰器追踪变化并触发UI更新,普通变量无法触发更新。typescript<br>// 错误:<br>let count = 0;<br>// 正确:<br>@State count: number = 0;
组件命名与结构组件名称必须以大写字母开头,且文件名与组件名一致;@Entry组件必须包含build函数。遵循驼峰命名规范,确保框架能正确识别组件;build函数是UI渲染的入口。typescript<br>// 组件文件必须为MyComponent.ets,组件名MyComponent<br>@Entry<br>struct MyApp {<br> build() { ... }<br>}
语法限制禁止在build函数中使用try-catchthrow等异常处理语法(部分场景允许)。build函数需保持纯粹的UI描述,异常处理可能破坏UI重建逻辑。typescript<br>// 建议在业务逻辑中处理异常,而非build内<br>function handleError() {<br> try { ... } catch(e) { ... }<br>}
模块依赖entry模块禁止直接引用feature模块资源,需通过har包共享。模块化设计要求隔离业务模块,feature模块需编译为harentry引用。-

四、UI样式

4.1. 图片
4.2. 布局
4.2.1 Grid 布局相关知识总结表
属性/概念说明示例/用法
Grid 容器基于网格的二维布局容器,通过行(rows)和列(columns)定义子组件位置。<Grid columnsTemplate="1fr 1fr" rowsTemplate="50vp 50vp">...</Grid>
columnsTemplate定义列宽,支持fr(比例单位)、pxvp等单位,多个值用空格分隔。columnsTemplate="1fr 2fr":两列宽度比例为1:2
columnsTemplate="100px 50%":第一列100px,第二列占容器宽度50%
rowsTemplate定义行高,单位与columnsTemplate一致。rowsTemplate="80vp 1fr":第一行80vp,第二行占剩余空间比例1fr
fr 单位弹性比例单位,基于容器剩余空间分配。1fr表示1份,2fr表示2份,依此类推。columnsTemplate="1fr 3fr":两列宽度比为1:3
GridItem 定位通过gridColumn(列)和gridRow(行)指定子组件所在网格位置。<GridItem gridColumn="1" gridRow="2">...</GridItem>:位于第1列第2行
常用布局场景- 等宽列:columnsTemplate="1fr 1fr 1fr"(三列等宽)
- 固定+弹性列:columnsTemplate="120px 1fr"(第一列120px,第二列占剩余空间)
与Row/Column的区别Grid是二维布局(行列交叉),Row/Column是一维布局(水平/垂直方向)。复杂网格布局(如表格、宫格)优先使用Grid,简单线性排列用Row/Column。
4.2.2 对齐
场景Start/End 的含义Center 的含义
Row 主轴水平方向的左/右对齐水平居中
Column 主轴垂直方向的上/下对齐垂直居中
Row/Column 交叉轴垂直/水平方向的顶部/底部对齐(Row用VerticalAlign垂直/水平居中(Row用VerticalAlign.Center
文本对齐文本起始/结束位置对齐(与阅读方向有关)文本居中
场景Top/Bottom 的含义Center 的含义
Row 交叉轴垂直方向的顶部/底部对齐垂直居中
Stack 定位子组件居顶部/底部(水平默认居中)完全居中
Swiper 指示器指示器位置居顶部/底部指示器垂直居中
Dialog 位置对话框从顶部/底部弹出对话框居中显示
4.2.3 Tabs组件
属性/概念说明示例/用法
BarPosition导航栏在主轴方向的对齐位置,枚举值:
- Start:起始端
- End:结束端
- Center:居中
- Float:悬浮
<Tabs barPosition={BarPosition.End}>...</Tabs>:导航栏在底部或右侧(取决于vertical
vertical控制Tabs布局方向:
- false(默认):水平布局(导航栏在上,内容在下)
- true:垂直布局(导航栏与内容左右排列)
<Tabs vertical={true}>...</Tabs>:垂直布局,导航栏与内容区水平排列
BarMode导航栏显示模式,枚举值:
- Scrollable:可滚动(标签过多时)
- Fixed:固定宽度(均分容器宽度)
<Tabs barMode={BarMode.Scrollable}>...</Tabs>:标签过多时可横向滚动
Index当前选中标签的索引(从0开始)。<Tabs index={1}>...</Tabs>:默认选中第2个标签
TabContent标签内容容器,每个标签对应一个TabContent。<TabContent tabBar={<Text>标签1</Text>}>内容1</TabContent>
常用布局场景- 顶部导航:vertical=false(默认),barPosition=BarPosition.Start
- 底部导航:vertical=falsebarPosition=BarPosition.End
- 左侧导航:vertical=truebarPosition=BarPosition.Start
- 右侧导航:vertical=truebarPosition=BarPosition.End
4.2.4 子组件

特定容器组件有固定子元素类型

List → 仅允许包含ListItem
Grid → 仅允许包含GridItem
TabContent → 仅允许包含TabPane
Stack → 仅允许包含StackItem

布局组件(Column/Row/Stack)可自由嵌套

布局组件可作为外层包裹容器组件(如Column>List),或作为容器子元素的内部布局(如ListItem>Row)
4.2.5 Swiper组件
属性名类型默认值作用
loopbooleanfalse是否开启循环轮播,true时首尾页无缝衔接(如从最后一页切到第一页)。
autoPlaybooleanfalse是否自动轮播,开启后按interval间隔切换。
intervalnumber3000自动轮播间隔时间(毫秒)。
durationnumber500切换动画时长(毫秒)。
verticalbooleanfalse轮播方向,true为垂直滚动,false为水平滚动。
indexnumber0当前显示的子项索引,可双向绑定实现编程控制。
showPaginationbooleantrue是否显示导航点(分页指示器)。
paginationStyleobject-导航点样式(颜色、大小、选中状态等)。
4.3. 文本
4.3.1 TextDecoration 相关知识总结表
属性类型合法值示例用法
decoration
需同时设置 typecolorstyle 三个子属性,缺一不可。
TextDecoration{ type: TextDecorationType, color: Color, style: TextDecorationStyle }<Text decoration={{ type: TextDecorationType.LineThrough, color: Color.Red }}>删除文本</Text>
TextDecorationType枚举None
LineThrough
Underline(底部装饰线)
<Text decoration={{ type: TextDecorationType.Underline }}>下划线</Text>
TextDecorationStyle枚举Solid
Double
Dotted
Dashed
Wavy
<Text decoration={{ type: TextDecorationType.Underline, style: TextDecorationStyle.Dotted }}>虚线</Text>
TextDecorationColorColor支持颜色值(如 Color.Red#FF0000rgba(255,0,0,1)<Text decoration={{ type: TextDecorationType.Underline, color: '#FF0000' }}>红色下划线</Text>
4.4 导航

核心跳转方法对比

方法名作用描述参数说明页面栈变化
pushPathByName入栈新页面,保留当前页面在栈中pageName(页面名称)、params(路由参数)、animate(是否动画,默认true)栈深度+1,新页面成为栈顶
replacePathByName替换栈顶页面,原栈顶页面出栈pageNameparamsanimate(同上)栈顶元素替换,栈深度不变
pop()弹出栈顶页面,返回上一页无参数栈深度-1,上一页成为栈顶
popToPage()弹出至指定页面,中间页面全部出栈pageName(目标页面名称)栈深度调整为目标页面的位置
clearAndPushPath()清空栈中所有页面,再入栈新页面pageNameparamsanimate栈重置为仅包含新页面

路由参数传递方式

方式说明示例
基本参数传递通过路由参数对象传递简单数据(字符串、数值、布尔等){ key: 'value', num: 123 }
跨页面数据共享使用AppStorageGlobalContext实现全局数据共享,适合大数据或复杂对象传递AppStorage.SetOrCreate('dataKey', dataValue)
URI路由传递通过URI格式传递参数(适用于跨应用跳转)pushPathByName('pages/Detail', { uri: 'detail?param1=1&param2=abc' })

鸿蒙 Navigation 布局模式

模式名称英文名称应用场景典型界面
单页面模式SinglePage内容在同一页面内切换,无页面跳转,适合简单信息展示或标签式导航。底部Tab导航、标签页(Tabs)
层叠模式Stack页面按栈结构管理,支持前进/后退逻辑,符合移动端用户习惯。传统App的页面跳转(如详情页→列表页)
分栏模式Split大屏设备专属,左右分栏显示导航与内容,支持自适应切换(大屏分栏/小屏层叠)。平板端的文件管理器(左侧目录+右侧内容)

不同导航位置的配置组合

导航位置verticalbarPosition布局效果
顶部导航falseStart导航栏在顶部,内容区在下方,标签从左到右排列。
底部导航falseEnd导航栏在底部,内容区在上方,标签从左到右排列。
左侧导航trueStart导航栏在左侧,内容区在右侧,标签从上到下排列。
右侧导航trueEnd导航栏在右侧,内容区在左侧,标签从上到下排列。
顶部居中falseCenter导航栏在顶部且居中,内容区在下方。
悬浮导航falseFloat导航栏悬浮在内容区上方(通常带背景色和阴影)。

相关文章:

  • 纯血HarmonyOS ArKTS NETX 5 打造小游戏实践:狼人杀(介绍版(附源文件)
  • React16,17,18,19更新对比
  • springboot后端与鸿蒙的结合
  • 算法导论第一章:算法基础与排序艺术
  • 西电【信息与内容安全】课程期末复习笔记
  • 53. 最大的子数组和
  • 26-数据结构-顺序表1
  • go部分语法记录
  • 算法第14天|继续学习二叉树:找二叉树左下角的值、二叉树路径总和、从中序遍历与后序遍历序列构建二叉树
  • 数据结构 (树) 学习 2025年6月12日12:59:39
  • 校园网数据安全防线
  • 【力扣 简单 C】83. 删除排序链表中的重复元素
  • 浅析4D-bev标注技术在自动驾驶领域的重要性
  • python中的分支结构:单分支、多分支,switch语句
  • Haption遥操作机械臂解决方案通过高精度力反馈技术实现人机协同操作
  • 常用三款解压软件对比
  • python学习---dayday2
  • 数据库-数据查询-Like
  • Vue3+TypeScript实现解释器模式
  • Vue3+TypeScript实现责任链模式
  • 手机网站全屏代码/东莞网站推广企业
  • 小说阅读网站开发论文/网络推广违法吗
  • 网站建设吗/手机网站百度关键词排名查询
  • 系部网站建设方案/google海外版
  • 巩义网站建设报价/国内设计公司前十名
  • 量力商务大厦网站建设/沈阳seo排名外包