鸿蒙实战:页面跳转

文章目录

  • 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框架的理解,也锻炼了在鸿蒙系统上进行应用开发的实践能力。通过实际操作,学会了如何设置项目、准备素材、编写代码以及测试应用,为未来更复杂的项目打下了坚实的基础。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA部署AI代写插件

前言 Hello大家好,当下是AI盛行的时代,好多好多东西在AI大模型的趋势下都变得非常的简单。 比如之前想画一幅风景画得先去采风,然后写实什么的,现在你只需描述出你想要的效果AI就能够根据你的描述在几分钟之内画出一幅你想要的风景…

深入理解 Spark 中的 Shuffle

Spark 的介绍与搭建:从理论到实践_spark环境搭建-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交:本地与集群模式全解析-CSDN博客 Spark on YARN:Spark集群模式…

常用在汽车PKE无钥匙进入系统的高度集成SOC芯片:CSM2433

CSM2433是一款集成2.4GHz频段发射器、125KHz接收器和8位RISC(精简指令集)MCU的SOC芯片,用在汽车PKE无钥匙进入系统里。 什么是汽车PKE无钥匙进入系统? 无钥匙进入系统具有无钥匙进入并且启动的功能,英文名称是PKE&…

人力资源招聘系统-提升招聘效率与质量的关键工具

在当今这个竞争激烈的商业环境中,企业要想在市场中立于不败之地,关键在于拥有高素质的人才队伍。然而,传统的招聘方式往往效率低下,难以精准匹配企业需求与人才特质,这无疑给企业的发展带来了不小的挑战。 随着科技的飞…

R语言贝叶斯分析:INLA 、MCMC混合模型、生存分析肿瘤临床试验、间歇泉喷发时间数据应用|附数据代码...

全文链接:https://tecdat.cn/?p38273 多模态数据在统计学中并不罕见,常出现在观测数据来自两个或多个潜在群体或总体的情况。混合模型常用于分析这类数据,它利用不同的组件来对数据中的不同群体或总体进行建模。本质上,混合模型是…

算法--解决二叉树遍历问题

第一 实现树的结构 class Node(): # 构造函数,初始化节点对象,包含数据和左右子节点 def __init__(self, dataNone): self.data data # 节点存储的数据 self.left None # 左子节点,默认为None self.rig…

华为eNSP:MSTP

一、什么是MSTP? 1、MSTP是IEEE 802.1S中定义的生成树协议,MSTP兼容STP和RSTP,既可以快速收敛,也提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。 2、MSTP可以将一个或多个VLAN映射到一个Inst…

从零到一:利用 AI 开发 iOS App 《震感》的编程之旅

在网上看到一篇关于使用AI开发的编程经历,分享给大家 作者是如何在没有 iOS 开发经验的情况下,借助 AI(如 Claude 3 模型)成功开发并发布《震感》iOS 应用。 正文开始 2022 年 11 月,ChatGPT 诞生并迅速引发全球关注。…

C++__day1

1、思维导图 2、如果登录失败&#xff0c;提示用户登录失败信息&#xff0c;并且提示错误几次&#xff0c;且重新输入&#xff1b;如果输入错误三次&#xff0c;则退出系统 #include <iostream> using namespace std;int main() {string id , pswd;string user"admi…

MySQL45讲 第二十讲 幻读是什么,幻读有什么问题?

文章目录 MySQL45讲 第二十讲 幻读是什么&#xff0c;幻读有什么问题&#xff1f;一、幻读的定义二、幻读带来的问题&#xff08;一&#xff09;语义问题&#xff08;二&#xff09;数据一致性问题 三、InnoDB 解决幻读的方法四、总结 MySQL45讲 第二十讲 幻读是什么&#xff0…

web与网络编程

使用HTTP协议访问Web 通过发送请求获取服务器资源的Web浏览器等&#xff0c;被成为客户端(client)。 Web使用一种名为HTTP(超文本传输协议)的协议作为规范&#xff0c;完成从客户端到服务器端等一系列运作流程。 可以说&#xff0c;Web时建立在HTTP协议上通信的。 网络基础T…

深入理解接口测试:实用指南与最佳实践5.0(五)

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…

2024游戏陪玩app源码的功能介绍/线上陪玩交友上线即可运营软件平台源码搭建流程

一个完整的陪玩交友系统从概念到实现再到维护的全过程得以清晰展现。每一步都需要团队的紧密协作与细致规划&#xff0c;以确保系统既满足用户需求&#xff0c;又具备良好的稳定性和可扩展性。 基础框架 移动端开发框架&#xff1a;如uniapp&#xff0c;它支持多平台开发&…

预测AI如何提升销售绩效管理:五大方式

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

修改数据库和表的字符集

1、修改数据库字符集 mysql> show CHARACTER SET; 查看所有字符集 mysql> show create database wordpress; 查看数据库wordpress当前字符集mysql> alter database wordpress character set gbk; 将数据库wordpress字符集改为gb…

DB-GPT系列(四):DB-GPT六大基础应用场景part1

一、基础问答 进入DB-GPT后&#xff0c;再在线对话默认的基础功能就是对话功能。这里我们可以和使用通义千问、文心一言等在线大模型类似的方法&#xff0c; 来和DB-GPT进行对话。 但是值得注意的是&#xff0c;DB-GPT的输出结果是在内置提示词基础之上进行的回答&#xff0c…

海量数据面试题

目录 前言 什么是海量数据 一、利用位图解决 二、利用布隆过滤器解决 三、利用哈希切割解决 前言 在大数据时代&#xff0c;海量数据处理已成为技术领域中的一项重要课题。无论是企业级应用、互联网平台&#xff0c;还是人工智能和机器学习的实现&#xff0c;都离不开对大规…

操作系统实验:在linux下用c语言模拟进程调度算法程序

文章目录 1、实验内容2、实验结果及分析3、如何在linux下编写并执行c语言程序以及实验源代码gcc -o test test.c1、实验内容 1)用C语言编程实现对N个进程采用某种进程调度算法(如动态优先权调度算法、先来先服务算法、短进程优先算法、时间片轮转调度算法)调度执行的模拟。…

前端开发迈向全栈之路:规划与技能

一、前端开发与全栈开发的差异 前端开发主要负责构建和实现网页、Web 应用程序和移动应用的用户界面。其工作重点在于网页设计和布局&#xff0c;使用 HTML 和 CSS 技术定义页面的结构、样式和布局&#xff0c;同时运用前端框架和库如 React、Angular 或 Vue.js 等构建交互式和…

GOLANG+VUE后台管理系统

1.截图 2.后端工程截图 3.前端工程截图