首页 > 其他分享 >鸿蒙Navigation入门使用

鸿蒙Navigation入门使用

时间:2024-11-14 22:18:38浏览次数:1  
标签:入门 鸿蒙 Text 100% 使用 Navigation 弹窗 页面

Navigation组件适用于模块内和跨模块的路由切换,通过组件级路由能力实现更加自然流畅的转场体验,并提供多种标题栏样式来呈现更好的标题和内容联动效果。一次开发,多端部署场景下,Navigation组件能够自动适配窗口显示大小,在窗口较大的场景下自动切换分栏展示效果。

根页面设置

我们在Entry的入口处Index.ets使用Navigation当作根页面,这里会面临一个问题,怎么从启动页跳转到首页,并关闭启动页,使用首页一直留在页面栈中,不允许销毁,在前面的文章《鸿蒙Navigation处理启动页跳转到首页问题》中有介绍处理方法,在此不展开。在使用Navigation时,由于默认带有TitleBar和Toolbar,样式不好自定义,我们直接隐藏TitleBar和Toolbar,实际需要的话,可以自己实现。由于默认是Auto模式,以便于适配大屏设备,若我们在大屏设备上不使用分栏效果,可以强制设置单页面模式。

@Entry
@ComponentV2
struct Index {
  nav: NavPathStack = new NavPathStack()

  build() {
    Navigation(this.nav)
    .mode(NavigationMode.Stack)
    .hideToolBar(true)
    .hideTitleBar(true)
    .height('100%')
    .width('100%')
  }
}

系统路由表配置

接下来我们需要配置系统路由表,在resources/base/profile目录下新建一个json文件,例如router_map.json,并在里面配置相关的路由页面,例如我们配置一个弹窗页面和一个登录页面。

{
  "routerMap": [
    {
      "name": "dialog",
      "pageSourceFile": "src/main/ets/pages/dialog/DialogPage.ets",
      "buildFunction": "dialogBuilder"
    },
    {
      "name": "login",
      "pageSourceFile": "src/main/ets/pages/login/LoginPage.ets",
      "buildFunction": "loginBuilder"
    }
  ]
}

在routerMap里面配置具体的页面,name为页面名称,使用push打开新页面时,传的name名称就是这里定义的。pageSourceFile为页面源文件,buildFunction为页面入口builder,通过源文件找到这个入口builder。在module.json5文件中有一个routerMap字段,值为我们前面定义的router_map.json

实现子页面

路由表字义好了后,我们需要实现具体的页面,这里分别实现一个弹窗页面和标准页面。弹窗示例如下,页面模式需要设置为NavDestinationMode.DIALOG

@Builder
function dialogBuilder() {
  DialogPage()
}
@ComponentV2
export struct DialogPage {
  build() {
    NavDestination() {
      Stack() {
        Column() {
          Text('弹窗标题')
          Text('弹窗内容')

          Row() {
            Text('取消').layoutWeight(1)
            Text('确定').layoutWeight(1)
          }
        }
        .width('80%')
        .borderRadius(16)
        .backgroundColor($r('app.color.start_window_background'))
      }.width('100%').height('100%')
    }.hideTitleBar(true).mode(NavDestinationMode.DIALOG)
  }
}

标准登录页面如下,默认为标准模式,mode可以省略不设置

@Builder
function loginBuilder() {
  LoginPage()
}
@ComponentV2
export struct LoginPage {
  build() {
    NavDestination() {
      Column() {
        Text('账号')
        Text('密码')
        Text('登录')
      }
    }
    .width('100%')
    .height('100%')
    .hideTitleBar(true)
  }
}

页面跳转操作

打开新页面

使用NavPathStack的pushPath或pushPathByName可以打开一个新页面,例如打开登录页面则是navPathStack.pushPathByName('login', undefined),显示一个弹窗则是navPathStack.pushPathByName('dialog', undefined)。可以发现使用Navigation来实现弹窗还是非常简单的,而且可以全局显示,不依赖于具体页面以及Context,而且弹窗还有显示隐藏等回调。

返回页面

使用NavPathStack的pop方法关闭当前页面,回到上一个页面,我们还可以使用popToName返回到指定的页面,也可以使用popToIndex返回到第几个页面,甚至还可以使用clear方法直接回到首页,使用起来还是非常方便的。

标签:入门,鸿蒙,Text,100%,使用,Navigation,弹窗,页面
From: https://www.cnblogs.com/zhaloe/p/18546971

相关文章

  • 51单片机入门教程——LED闪烁实验
    要想实现LED闪烁,其实操作很简单,只需要循环让D1指示灯先亮一会后熄灭。这里就涉及一个延时问题,我们知道单片机执行每一条代码指令都是需要时间的,因此只需要编写一循环函数,让CPU不干其他事,专门在那循环运行即可实现延时功能。延时函数如下:voiddelay_10us(u16ten_us){wh......
  • 51单片机入门教程——点亮第一个LED灯
    LED即发光二极管,具有单向导电性,通过5mA左右电流即可发光,电流越大,其亮度越强,但若电流过大,会烧毁二极管。开发板上LED模块电路如下图所示:通过上图可以看出D1-D8连接单片机上的P20-P27口。图中LED采用共阳接法,即所有LED阳极管脚接电源VCC,阴极管脚通过一个471欧的限流电阻接到P2......
  • 鸿蒙NEXT应用示例:切换图片动画
     【引言】在鸿蒙NEXT应用开发中,实现图片切换动画是一项常见的需求。本文将介绍如何使用鸿蒙应用框架中的组件和动画功能,实现不同类型的图片切换动画效果。【环境准备】电脑系统:windows10开发工具:DevEcoStudioNEXTBeta1BuildVersion:5.0.3.806工程版本:API12真机:ma......
  • 鸿蒙NEXT开发案例:年龄计算
     ​【引言】本案例的目标是开发一款年龄计算器应用,该应用能够根据用户输入的出生日期,计算出用户的实际年龄、虚岁、星座、生肖等信息。同时,应用还将提供距离下次公历和农历生日的天数及星期等信息。为了实现这些功能,我们将使用ArkTS和ArkUI作为开发语言,并借助@nutpi/calendar......
  • MySQL数据库:SQL语言入门 【3】(学习笔记)
    5,TCL—— 事务控制语言(TransactionControlLanguage)     用于数据库的事务管理。(1)事务的概念+作用     事务(Transaction)指的是一个操作序列,该操作序列中的多个操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位,由DBMS(数......
  • MySQL数据库:SQL语言入门 【2】(学习笔记)
    目录 2,DML—— 数据操作语言(DataManipulationLanguage)(1)insert  增加 数据(2)delete 删除 数据    truncate 删除表和数据,再创建一个新表(3)update 修改 数据3,DDL——数据定义语言(DataDefinitionLanguage)(1)create 创建数据库对象(2)drop 删除......
  • MySQL数据库:SQL语言入门 【1】(学习笔记)
    SQL(StructuredQueryLanguage)是结构化查询语言的简称,它是一种数据库查询和程序设计语言,同时也是目前使用最广泛的关系型数据库操作语言。(95%适用于所有关系型数据库)【 SQL是关系型数据库通用的操作语言】在数据库管理系统中,使用SQL语言来实现数据的存取、查询、更新等功能......
  • 2024/11/13日 日志 代码优化 以及 JSP 的快速入门、原理、脚本、缺点 和 EL表达式 以
    代码优化--创建SqlSessionFactory代码优化点击查看代码--//2.1获取SqlSessionFactory对象--Stringresource="mybatis-config.xml";--InputStreaminputStream=Resources.getResourceAsStream(resource);--SqlsessionFactorysqlSessionFactory=newSqlSessio......
  • 轻松掌握Spring:快速入门指南 (免费学习!!!)
    目录一、Spring简单介绍二、Java反射机制三、SpringIOC机制3.1使用构造器来实例化Bean3.2使用静态工厂实例化Bean3.3使用实例工厂来实例化Bean3.4SpringIOC实现原理3.5SpringBean的作用域四、SpringAOP机制4.1相关概念4.2利用proxy实现AOP功能4.3利用......
  • SpringBoot快速入门
    一、SpringBoot简介SpringBoot是由Pivotal团队提供的全新框架,旨在简化Spring应用的初始搭建以及开发过程。它基于SpringFramework构建,但并不是Spring的替代者或精简版本,而是为了让程序员更好地使用Spring。SpringBoot通过提供默认配置和“习惯优于配置”的理念,使得开发者......