项目源码已开源(持续更新中~~): https://gitcode.com/nutpi/HarmonyosNextCaseStudyTutorial
项目演示
注意: 项目需要再真机或模拟器中运行, 否则会出现部分图片无法展示的问题
一、概述
MainPage.ets是HarmonyOS Next开发者手册应用中的三级页面,它作为具体案例的展示页面,连接了二级导航页面和具体的功能展示。本文将深入分析这个文件的代码结构、UI组件使用以及导航实现,帮助开发者理解HarmonyOS应用的多级页面设计模式。
二、文件结构分析
1. 导入声明
import router from '@ohos.router';
这部分代码导入了HarmonyOS提供的路由服务,用于页面跳转。与二级页面相同,MainPage也使用了@ohos.router
模块来实现页面间的导航。
2. 组件声明
@Component
export struct MainPage {
// 组件实现
}
与二级页面不同,MainPage使用了@Component
装饰器而非@Entry
和@Component
的组合。
主要是三级页面在我的设计中应该是案例的分层, 因此这里采用的用静态模块来开发, 从而避免多项目的影响不利于单独案例的掌握
三、UI结构实现
1. 整体布局
Column({ space: 30 }) {
// 内容组件
}
.backgroundColor('#F0F5FF')// 淡蓝色背景
.alignItems(HorizontalAlign.Start)
.justifyContent(FlexAlign.Start)
.height('100%')
.width('100%')
页面使用Column
组件作为根容器,实现了垂直布局:
- 设置了组件间距为30像素
- 背景色为淡蓝色(#F0F5FF),与一级和二级页面保持一致
- 内容左对齐(HorizontalAlign.Start)
- 占满整个屏幕(100%宽高)
这种布局方式简洁明了,适合展示案例内容。
2. 导航按钮设计
Row() {
Button('Blogs')
.fontSize(16)
.foregroundColor('#f5f5f5')
.padding({
left: 16,
right: 16,
top: 8,
bottom: 8
})
.borderRadius(8)
.onClick(() => {
router.pushUrl({url:"view/BlogViewList"})
})
Button('← 返回')
.fontSize(16)
.foregroundColor('#f5f5f5')
.padding({
left: 16,
right: 16,
top: 8,
bottom: 8
})
.borderRadius(8)
.onClick(() => {
router.back();
})
}
.margin({ right: 32 })
.alignItems(VerticalAlign.Bottom)
.justifyContent(FlexAlign.SpaceBetween)
.width('100%')
.height('50rpx')
导航区域使用Row
容器,包含两个按钮:
Blogs按钮:
- 点击时使用
router.pushUrl
导航到博客列表页面 - 目标路径为"view/BlogViewList"
- 点击时使用
返回按钮:
- 文本包含左箭头符号(←),增强可识别性
- 点击时使用
router.back()
返回上一页
两个按钮共享相同的样式:
- 字体大小:16像素
- 文字颜色:浅灰色(#f5f5f5)
- 内边距:水平16像素,垂直8像素
- 边框圆角:8像素
按钮容器的设计特点:
- 右侧外边距:32像素
- 底部对齐(VerticalAlign.Bottom)
- 两端对齐(FlexAlign.SpaceBetween),使两个按钮分别位于行的两端
- 宽度:100%
- 高度:50rpx(响应式像素单位)
四、导航功能实现
1. 返回导航
Button('← 返回')
// 样式属性...
.onClick(() => {
router.back();
})
返回导航使用router.back()
方法,将用户带回上一页(二级页面)。这与二级页面中的返回按钮实现方式相同,保持了导航体验的一致性。
2. 博客列表导航
Button('Blogs')
// 样式属性...
.onClick(() => {
router.pushUrl({url:"view/BlogViewList"})
})
博客列表导航使用router.pushUrl
方法,将用户带到博客列表页面。这种方式会将当前页面保留在导航栈中,用户可以通过返回按钮回到案例页面。
五、与项目其他页面的关系
MainPage作为三级页面,在整个应用的导航结构中处于以下位置:
Index (主页)
├── BasicCaseList (萌新小白)
│ └── MainPage (案例详情) ← 当前分析的页面
├── AdvancedCaseList (登堂入室)
│ └── MainPage (案例详情)
├── HybridCaseList (进阶高手)
│ └── MainPage (案例详情)
└── BlogViewList (博客列表)
└── BlogDetail (博客详情)
MainPage可以通过返回按钮导航回对应的二级页面(BasicCaseList、AdvancedCaseList或HybridCaseList),也可以通过Blogs按钮直接跳转到BlogViewList页面。
七、总结
好了 ,手把手的项目了解就到这里,其实还有个四级页面 用于展示与案例项管理的文章讲解内容, 以及五级页面,对象的文章详情, 由于布局过于简单,因此不在讲解了, 后面就进入真正的案例讲解喽~~~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。