文章目录
- 大体介绍
- 文件介绍
- 各部分代码
- SplashPage.ets
- Index.ets
- HomePage.ets
- route_map.json
- module.json5
- 流程
大体介绍
文件介绍
其中:
- pages为我们的页面内容(我个人理解功能性小于activity但是大于fragment)
- route_map.json 为自定义的路由表(使用Navigation而不是Router)
- SplashPage.ets 为我们自定义的闪屏文件
- HomePage.ets 为我们测试的二级页面
- route_map.json 需要配置在module.json5中
各部分代码
SplashPage.ets
import { router } from "@kit.ArkUI"
@Entry
@Component
struct SplashPage {
build() {
Column() {
Image($r("app.media.huawei_logo"))
.padding({
left: "15%",
right: "15%"
}).width("100%")
LoadingProgress()
.width("20%")
.height("20%")
.color(Color.Red)
}.height('100%')
.width('100%')
.alignItems(HorizontalAlign.Center)
.justifyContent(FlexAlign.Center)
}
aboutToAppear(): void {
setTimeout(() => {
router.pushUrl(
{ url: "pages/Index" }
).then(()=>{
router.clear()
})
}, 2000)
}
}
Index.ets
@Entry
@Component
struct Index {
@Provide('pageInfos') pageInfos: NavPathStack = new NavPathStack();
build() {
Navigation(this.pageInfos) {
Column(){
Button("TO HOME").onClick(()=>{
this.pageInfos.pushPathByName("HomePage",null,true)
})
}
}
.height('100%')
.width('100%')
.mode(NavigationMode.Stack)
.hideBackButton(true)
.titleMode(NavigationTitleMode.Mini)
.toolbarConfiguration([
])
}
}
HomePage.ets
@Builder
export function PageOnBuilder(){
HomePage()
}
@Component
struct HomePage {
@State message: string = 'this is home';
build() {
NavDestination(){
RelativeContainer() {
Text(this.message)
.id('HomePageHelloWorld')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
}
.height('100%')
.width('100%')
}
}
}
route_map.json
{
"routerMap": [
{
"name": "HomePage",
"pageSourceFile": "src/main/ets/pages/HomePage.ets",
"buildFunction": "PageOnBuilder"
}
]
}
module.json5
{
"module": {
...
"routerMap": "$profile:route_map",
...
]
}
}
流程
- 修改启动页为自定义的Splash
- 自定义操作后跳到真正的Index页面
- Index页面用Navigation管理页面路由