项目源码已开源(持续更新中~~): https://gitcode.com/nutpi/HarmonyosNextCaseStudyTutorial
注意: 项目需要再真机或模拟器中运行, 否则会出现部分图片无法展示的问题
MainPage.ets是HarmonyOS Next开发者手册应用中的三级页面,它作为具体案例的展示页面,连接了二级导航页面和具体的功能展示。本文将深入分析这个文件的代码结构、UI组件使用以及导航实现,帮助开发者理解HarmonyOS应用的多级页面设计模式。
import router from '@ohos.router';
这部分代码导入了HarmonyOS提供的路由服务,用于页面跳转。与二级页面相同,MainPage也使用了@ohos.router
模块来实现页面间的导航。
@Component
export struct MainPage {
// 组件实现
}
与二级页面不同,MainPage使用了@Component
装饰器而非@Entry
和@Component
的组合。
主要是三级页面在我的设计中应该是案例的分层, 因此这里采用的用静态模块来开发, 从而避免多项目的影响不利于单独案例的掌握
Column({ space: 30 }) {
// 内容组件
}
.backgroundColor('#F0F5FF')// 淡蓝色背景
.alignItems(HorizontalAlign.Start)
.justifyContent(FlexAlign.Start)
.height('100%')
.width('100%')
页面使用Column
组件作为根容器,实现了垂直布局:
这种布局方式简洁明了,适合展示案例内容。
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
容器,包含两个按钮:
router.pushUrl
导航到博客列表页面router.back()
返回上一页两个按钮共享相同的样式:
按钮容器的设计特点:
Button('← 返回')
// 样式属性...
.onClick(() => {
router.back();
})
返回导航使用router.back()
方法,将用户带回上一页(二级页面)。这与二级页面中的返回按钮实现方式相同,保持了导航体验的一致性。
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页面。
好了 ,手把手的项目了解就到这里,其实还有个四级页面 用于展示与案例项管理的文章讲解内容, 以及五级页面,对象的文章详情, 由于布局过于简单,因此不在讲解了, 后面就进入真正的案例讲解喽~~~
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。