鸿蒙实战:页面跳转

news2024/12/22 13:16:30

文章目录

  • 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.coloradmin.cn/o/2241843.html

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

相关文章

文献解读-DNAscope: High accuracy small variant calling using machine learning

关键词:基准与方法研究;基因测序;变异检测; 文献简介 标题(英文):DNAscope: High accuracy small variant calling using machine learning标题(中文):DNAsc…

程序设计方法与实践-变治法

变换之美 变治法就是基于变换的思路,进而使原问题的求解变得简单的一种技术。 变治法一般有三种类型: 实例化简:将问题变换为同问题,但换成更为简单、更易求解的实例。改变表现:变化为同实例的不同形式,…

解决Anaconda出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url

解决Anaconda出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url 第一类情况 在anaconda创建新环境时,使用如下代码 conda create -n charts python3.7 错误原因: 默认镜像源访问速度过慢,会导致超时从而导致更新和下载失败。 解决方…

Spring Boot框架:电商系统的技术革新

4 系统设计 网上商城系统的设计方案比如功能框架的设计,比如数据库的设计的好坏也就决定了该系统在开发层面是否高效,以及在系统维护层面是否容易维护和升级,因为在系统实现阶段是需要考虑用户的所有需求,要是在设计阶段没有经过全…

wordpress下载站主题推荐riproV5 wordpress日主题

iPro主题全新V5版本,是一个优秀且功能强大、易于管理、现代化的WordPress虚拟资源商城主题。支持首页模块化布局和WP原生小工具模块化首页可拖拽设置,让您的网站设计体验更加舒适。同时支持了高级筛选、自带会员生态系统、超全支付接口等众多功能&#x…

微服务即时通讯系统的实现(客户端)----(1)

目录 1. 项目整体介绍1.1 项目概况1.2 界面预览和功能介绍1.3 技术重点和服务器架构 2. 项目环境搭建2.1 安装Qt62.3 安装vcpkg2.3 安装protobuf2.4 构建项目2.5 配置CMake属性 3. 项目核心数据结构的实现3.1 创建data.h存放核心的类3.2 工具函数的实现3.3 创建编译开关 4. 界面…

2024年11月15日

1.计算机网络 逻辑右移 做加减法 定点乘法 原码乘法运算 一位乘 计组 2.英语六级

算法定制LiteAIServer摄像机实时接入分析平台玩手机打电话检测算法:智能监控的新篇章

在现代社会,随着智能手机的普及,无论是在工作场所还是公共场所,玩手机或打电话的行为日益普遍。然而,在某些特定环境下,如工厂生产线、仓库、学校课堂等,这些行为可能会影响到工作效率、安全或教学秩序。为…

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

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

深度学习基础—Beam search集束搜索

引言 深度学习基础—Seq2Seq模型https://blog.csdn.net/sniper_fandc/article/details/143781223?fromshareblogdetail&sharetypeblogdetail&sharerId143781223&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 上篇博客讲到,贪心算…

C++__day1

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

【机器学习】数学知识:欧式距离(Euclidean Distance)和曼哈顿距离(Manhattan Distance)

欧式距离和曼哈顿距离是两种常用的距离度量方法&#xff0c;用于衡量两点之间的相似性或差异性。它们在几何分析、数据挖掘、机器学习等领域有广泛应用。 1. 欧式距离 概念 欧式距离&#xff08;Euclidean Distance&#xff09;是最常见的直线距离度量方法&#xff0c;源于欧…

Java之JDBC,Maven,MYBatis

前言 就是用来操作数据库的 1.JDBC快速入门 注意在使用前一定要导入jar包 在模块那里新建目录&#xff0c;新建lib&#xff0c;粘贴复制jar包&#xff0c;我这个jar设置的是模块有效 package test1017;import java.sql.Connection; import java.sql.DriverManager; import…

JavaWeb笔记整理——Spring Task、WebSocket

目录 SpringTask ​cron表达式 WebSocket SpringTask cron表达式 WebSocket

【大数据学习 | HBASE高级】rowkey的设计,hbase的预分区和压缩

1. rowkey的设计 ​ RowKey可以是任意字符串&#xff0c;最大长度64KB&#xff0c;实际应用中一般为10~100bytes&#xff0c;字典顺序排序&#xff0c;rowkey的设计至关重要&#xff0c;会影响region分布&#xff0c;如果rowkey设计不合理还会出现region写热点等一系列问题。 …

如何实现主备租户的无缝切换 | OceanBase应用实践

对于DBA而言&#xff0c;确保数据库的高可用性、容灾等能力是其日常工作中需要持续思考和关注的重要事项。一方面&#xff0c;可以利用数据库自身所具备的功能来实现这些目标&#xff1b;若数据库本身不提供相应功能&#xff0c;DBA则需寻找其他工具来增强数据库的高可用性和容…

Spring 中的 BeanDefinitionParserDelegate 和 NamespaceHandler

一、BeanDefinitionParserDelegate Spring在解析xml文件的时候&#xff0c;在遇到<bean>标签的时候&#xff0c;我们会使用BeanDefinitionParserDelegate对象类解析<bean>标签的内容&#xff0c;包括<bean>标签的多个属性&#xff0c;例如 id name class in…

MQTT从入门到精通之MQTT Dashboard

MQTT Dashboard 1 Dashboard简介 EMQX 提供了一个内置的管理控制台&#xff0c;即 EMQX Dashboard。方便用户通过 Web 页面就能轻松管理和监控 EMQX 集群&#xff0c;并配置和使用所需的各项功能。 访问地址&#xff1a;http://ip:18083 首次登录访问账号&#xff1a;admin…

Flume和kafka的整合

1、Kafka作为Source 【数据进入到kafka中&#xff0c;抽取出来】 在flume的conf文件夹下&#xff0c;有一个flumeconf 文件夹&#xff1a;这个文件夹是自己创建的 创建一个flume脚本文件&#xff1a; kafka-memory-logger.conf Flume 1.9用户手册中文版 — 可能是目前翻译最完…

vue2项目中在线预览csv文件

简介 希望在项目中&#xff0c;在线预览.csv文件&#xff0c;本以为插件很多&#xff0c;结果都只是支持excel&#xff08;.xls、.xlsx&#xff09;一到.csv就歇菜。。。 关于文件预览 vue-office&#xff1a;文档、 查看在线演示demo&#xff0c;支持docx、.xlsx、pdf、ppt…