鸿蒙实战:页面跳转

文章目录

  • 1. 实战概述
  • 2. 实现步骤
    • 2.1 创建项目
    • 2.2 准备图片素材
    • 2.3 编写首页代码
    • 2.4 创建第二个页面
  • 3. 测试效果
  • 4. 实战总结

1. 实战概述

  • 实战概述:本实战通过ArkUI框架,在鸿蒙系统上开发了一个简单的两页面应用。首页显示问候语和“下一页”按钮,点击后跳转到第二页。第二页展示欢迎信息并提供“返回”按钮。通过路由模块实现页面跳转,并在控制台记录操作结果。

2. 实现步骤

2.1 创建项目

  • 选择类型与模板:Application - Empty Ability
    在这里插入图片描述
  • 设置项目基本信息
    在这里插入图片描述
  • 单击【Finish】按钮,生成项目基本框架
    在这里插入图片描述
  • 运行程序,查看效果(需要创建模拟器,没有模拟器,可以用previewer)
    在这里插入图片描述
  • 单击绿色的运行按钮
    在这里插入图片描述

2.2 准备图片素材

  • 将两个页面所需背景图片放入resources\base\media目录里
    在这里插入图片描述

2.3 编写首页代码

  • 首页pages/Index.ets
    在这里插入图片描述
// 导入页面路由模块,它提供了页面间跳转的功能
import { router } from '@kit.ArkUI';
// 导入业务错误处理模块,用于处理业务逻辑中可能出现的错误
import { BusinessError } from '@kit.BasicServicesKit';// 使用@Entry装饰器标记这个组件为页面的入口点
@Entry// 使用@Component装饰器定义这个组件
@Component
struct Index {// 定义一个状态变量message,用于存储要显示的文本内容,初始值为'Hi, My Friend'@State message: string = '你好,我的朋友~';// 定义一个状态变量next,用于存储按钮上的文本内容,初始值为'Next'@State next: string = '下一页';// build方法用于构建和返回组件的UI结构build() {Stack() {// 使用Image组件设置背景图片,图片资源通过$r函数引用Image($r('app.media.first')).width('100%') // 设置图片宽度为父容器宽度的100%.height('100%') // 设置图片高度为父容器高度的100%.objectFit(ImageFit.Cover) // 设置图片适应方式为覆盖整个容器,保持图片比例// 使用Row组件创建一个水平布局容器Row() {// 使用Column组件创建一个垂直布局容器,用于放置文本和按钮Column() {// 使用Text组件显示message状态变量的值Text(this.message).fontSize(40) // 设置文本字体大小为40.fontWeight(FontWeight.Bold) // 设置文本字体加粗.fontColor(Color.Green) // 设置文本绿色// 使用Button组件创建一个按钮Button() {// 按钮内的文本,显示next状态变量的值Text(this.next).fontSize(30) // 设置按钮内文本字体大小为30.fontWeight(FontWeight.Bold) // 设置按钮内文本字体加粗}// 设置按钮的类型为胶囊形.type(ButtonType.Capsule)// 设置按钮顶部外边距为20.margin({top: 20})// 设置按钮的背景颜色为蓝色.backgroundColor('#0D9FFB')// 设置按钮的宽度为父容器宽度的40%.width('40%')// 设置按钮的高度为父容器高度的10%.height('10%')// 为按钮绑定点击事件处理函数.onClick(() => {// 点击按钮时,在控制台输出成功点击的信息console.info('单击【下一页】按钮~');// 执行页面跳转操作,跳转到'pages/Second'页面// 使用router.pushUrl方法进行页面跳转,并处理跳转结果router.pushUrl({ url: 'pages/Second' }).then(() => {// 跳转成功后,在控制台输出跳转成功的信息console.info('成功跳转到第二页~');}).catch((err: BusinessError) => {// 捕获跳转过程中可能发生的错误,并处理// 这里假设错误对象是BusinessError类型,并输出错误码和错误信息console.error(`跳转到下一页失败。错误码:${err.code}, 错误信息:is ${err.message}`);});});}// 设置Column容器的宽度为父容器的100%,确保布局填满整个水平空间.width('100%')}// 设置Row容器的高度为父容器的100%,确保布局填满整个垂直空间.height('100%')}}
}
  • 代码说明:这段代码定义了一个ArkUI框架下的页面组件Index,作为鸿蒙系统的用户界面入口。它包含背景图片、文本和按钮。点击按钮后,页面会跳转到pages/Second,同时处理跳转成功或失败的情况,并在控制台输出相关信息。

2.4 创建第二个页面

  • pages目录上单击右键,New | Page | Empty Page
    在这里插入图片描述
  • 设置页面名称 - Second
    在这里插入图片描述
  • 单击【Finish】按钮
    在这里插入图片描述
  • 查看主页配置文件 - main_pages.json
    在这里插入图片描述
  • 编写Second.ets代码
// 导入页面路由模块,用于页面间的导航
import { router } from '@kit.ArkUI';
// 导入业务错误处理模块,用于捕获和处理业务相关的错误
import { BusinessError } from '@kit.BasicServicesKit';// 使用@Entry注解标记Second组件为页面入口点
@Entry// 使用@Component注解定义Second为一个组件
@Component
struct Second {// 定义一个状态变量message,用于存储页面上要显示的文本@State message: string = '泸职院欢迎你';// 定义一个状态变量back,用于存储返回按钮上的文本@State back: string = '返回';// build方法用于构建和返回组件的UI结构build() {Stack() {// 使用Image组件设置背景图片,图片资源通过$r函数引用Image($r('app.media.second')).width('100%') // 设置图片宽度为父容器宽度的100%.height('100%') // 设置图片高度为父容器高度的100%.objectFit(ImageFit.Cover) // 设置图片适应方式为覆盖整个容器,保持图片比例// 使用Row组件创建一个水平布局容器Row() {// 使用Column组件创建一个垂直布局容器,用于放置文本和按钮Column() {// 使用Text组件显示message状态变量的值Text(this.message).fontSize(40) // 设置文本字体大小为40.fontWeight(FontWeight.Bold) // 设置文本字体加粗.fontColor(Color.Red) // 设置文本红色// 使用Button组件创建一个按钮Button() {// 按钮内的文本,显示back状态变量的值Text(this.back).fontSize(30) // 设置按钮内文本字体大小为30.fontWeight(FontWeight.Bold) // 设置按钮内文本字体加粗}// 设置按钮的类型为胶囊形.type(ButtonType.Capsule)// 设置按钮顶部外边距为20.margin({top: 20})// 设置按钮的背景颜色为蓝色.backgroundColor('#0D9FFB')// 设置按钮的宽度为父容器宽度的40%.width('40%')// 设置按钮的高度为父容器高度的10%.height('10%')// 为按钮绑定onClick事件处理函数.onClick(() => {// 点击按钮时,在控制台输出成功点击的信息console.info('成功单击【返回】按钮~')try {// 调用router.back()方法尝试返回到上一页router.back()// 如果返回成功,在控制台输出成功返回的信息console.info('成功返回第一页~')} catch (err) {// 如果返回失败,捕获错误并处理// 尝试将错误对象转换为BusinessError类型,并获取错误码和错误信息let code = (err as BusinessError).code;let message = (err as BusinessError).message;// 在控制台输出失败返回的信息,包括错误码和错误信息console.error(`返回第一页失败。错误码:${err.code}, 错误信息:is ${err.message}`);}})}// 设置Column容器的宽度为父容器宽度的100%.width('100%')}// 设置Row容器的高度为父容器高度的100%,确保布局填满整个页面.height('100%')}}
}
  • 代码说明:这段代码定义了一个ArkUI的页面组件Second,作为鸿蒙系统的界面之一。它包含背景图、红色加粗文本“泸职院欢迎你”和蓝色胶囊形返回按钮。点击按钮尝试返回上一页,并在控制台记录操作结果,包括成功或失败的错误信息。

3. 测试效果

  • 在模拟器上运行程序
    在这里插入图片描述
  • 单击【下一页】按钮,跳转到第二个页面
    在这里插入图片描述
  • 单击【返回】按钮,返回第一个页面
    在这里插入图片描述
  • 查看操作录屏
    在这里插入图片描述

4. 实战总结

  • 通过本次实战,在鸿蒙系统上使用ArkUI框架开发了一个包含两个页面的简单应用。首页展示了问候语和一个按钮,点击后能够跳转到第二页。第二页则展示了欢迎信息和一个返回按钮。通过路由模块实现了页面间的跳转,并在控制台记录了操作结果。这个项目不仅加深了对ArkUI框架的理解,也锻炼了在鸿蒙系统上进行应用开发的实践能力。通过实际操作,学会了如何设置项目、准备素材、编写代码以及测试应用,为未来更复杂的项目打下了坚实的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023_Spark_实验十五:SparkSQL进阶操作

实验目标 通过实践掌握Spark SQL中复杂查询(包括子查询、窗口函数、联接等)的实现方式。了解如何通过合理的数据分区和缓存策略进行性能优化。实现一个基于Spark SQL的ETL数据处理流程,应用相关优化技巧。 实验背景 在本实验中&#xff0c…

大模型研究报告 | 2024年中国金融大模型产业发展洞察报告|附34页PDF文件下载

随着生成算法、预训练模型、多模态数据分析等AI技术的聚集融合,AIGC技术的实践效用迎来了行业级大爆发。通用大模型技术的成熟推动了新一轮行业生产力变革,在投入提升与政策扶植的双重作用下,以大模型技术为底座、结合专业化金融能力的金融大…

MySQL联合索引(abc)命中测试

1.建表 mysql创建一张表,表名:‘test_models’ id列为 主键,int类型 ,自增a,b,c,d,e 全部是int(11)为(a,b,c)添加一个联合索引 index_abc 执行语句:创建表 CREATE TA…

Gin 框架入门(GO)-1

1 介绍 Gin 是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快,Gin 最擅长的就是 Api 接口的高并发。 2 Gin 环境搭建 1.下载并安装 gin go get -u github.com/gin-gonic/gin 2.将 gin 引入到代码中: import "github.co…

VUE3+Three.js搭建教程

一、创建VUE项目工程 1、方法一 使用下面命令行快速创建vue项目,Please pick a preset这里我们选择使用VUE3 vue create projectName 创建时可能会遇到的报错 错误原因:当前使用的node版本未全局安装vue-cli脚手架,使用下面命令安装后再使…

【React】状态管理之Redux

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 状态管理之Redux引言1. Redux 的核心概念1.1 单一数据源(Single Sou…

自己动手写Qt Creator插件

文章目录 前言一、环境准备1.先看自己的Qt Creator IDE的版本2.下载源码 二、使用步骤1.参考原本的插件2.编写自定义插件1.cmakelist增加一个模块2.同理,qbs文件也增加一个3.插件源码 三、效果总结 前言 就目前而言,Qt Creator这个IDE,插件比…

React Native 全栈开发实战班 -React Native 基础

本课程旨在帮助学员系统掌握 React Native 全栈开发技能,从基础入门到实战项目开发。课程将分为多个模块,第一部分将聚焦于 React Native 的基础知识,包括开发环境搭建、React Native 简介与特点,以及项目结构解析。 第一部分&am…

Leetcode:118. 杨辉三角——Java数学法求解

题目——Leetcode:118. 杨辉三角 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2: 输入: numRow…

Linux中.NET读取excel组件,不会出现The type initializer for ‘Gdip‘ threw an exception异常

组件,可通过nuget安装,直接搜名字: ExcelDataReader using ConsoleAppReadFileData.Model; using ExcelDataReader; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Task…

Robot | 用 RDK 做一个小型机器人(更新中)

目录 前言架构图开发过程摄像头模型转换准备校准数据使用 hb_mapper makertbin 工具转换模型 底版开发 结语 前言 最近想开发一个小型机器人,碰巧看到了 RDK x5 发布了,参数对于我来说非常合适,就买了一块回来玩。 外设也是非常丰富&#xf…

jenkins使用cli发行uni-app到h5

官网文档HBuilderX 文档 首先确定是否存在环境变量 正常情况cmd中执行cli 如果提示 cli 不是内部或外部命令,也不是可运行的程序或批处理文件。请先配置环境变量 Freestyle Project项目在Build Steps中增加Execute Windows batch command命令如下 d: cd D:\devsof…

基于Zynq FPGA对雷龙SD NAND的测试

一、SD NAND特征 1.1 SD卡简介 雷龙的SD NAND有很多型号,在测试中使用的是CSNP4GCR01-AMW与CSNP32GCR01-AOW。芯片是基于NAND FLASH和 SD控制器实现的SD卡。具有强大的坏块管理和纠错功能,并且在意外掉电的情况下同样能保证数据的安全。 其特点如下&…

【Java语言】String类

在C语言中字符串用字符可以表示,可在Java中有单独的类来表示字符串(就是String),现在我来介绍介绍String类。 字符串构造 一般字符串都是直接赋值构造的,像这样: 还可以这样构造: 图更能直观的…

【神经科学学习笔记】基于分层嵌套谱分割(Nested Spectral Partition)模型分析大脑网络整合与分离的局部指标(二)

前言 1.学习背景 前几天笔者学习使用NSP (Network Segregation and Partnership) 算法计算大脑整合分离的全局指标,现在要在之前学习的基础上再来玩玩局部指标。 局部指标的计算主要在两个层面上进行:第一个层面是针对每个独立ROI的指标计算&#xff0…

WPF-控件的属性值的类型转化

控件的属性值需要转成int、double进行运算的&#xff0c;可以使用一下方法 页面代码 <StackPanel Margin"4,0,0,0" Style"{StaticResource Form-StackPanel}"> <Label Content"替换后材料增加金额&#xff…

Python3.11.9下载和安装

一、Python3.11.9下载和安装 1、下载 下载地址&#xff1a;https://www.python.org/downloads/windows/ 选择版本下载&#xff0c;例如&#xff1a;Python 3.11.9 - April 2, 2024 2、安装 双击exe安装 3、配置环境变量 pathD:\Program Files\python3.11.9 pathD:\Progr…

大模型学习笔记------BLIP模型的再思考

大模型学习笔记------BLIP模型的再思考 1、BLIP推理---如何进行“图生文”2、BLIP推理---如何进行视觉问答&#xff08;Visual Question Answering, VQA&#xff09;3、BLIP推理---如何进行图文检索&#xff08;Image-text retrieval&#xff09;任务4、总结 上一篇文章上文中讲…

超全面!一文带你快速入门HTML,CSS和JavaScript!

作为一名后端程序员&#xff0c;在开发过程中避免不了和前端打交道&#xff0c;所以就要了解一些前端的基础知识&#xff0c;比如三剑客HTML,CSS,JavaScript&#xff0c;甚至有必要学习一下Vue、React等前端主流框架。 学习文档&#xff1a;https://www.w3school.com.cn/ 一…

PcVue + SQL Grid : 释放数据的无限潜力

探秘PcVue系列&#xff1a;E3 PcVue SQL Grid : 释放数据的无限潜力 探秘PcVue之SQL 什么是SQL Grid&#xff1f; SQL Grid用于通过简单的sql查询语句&#xff0c;实现数据的查询和显示。结构化查询语句&#xff08;SQL&#xff09;可以帮助SCADA软件用户提高连接性以及发送和…