鸿蒙实战:页面跳转

文章目录

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

1. 实战概述

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

2. 实现步骤

2.1 创建项目

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

2.2 准备图片素材

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

2.3 编写首页代码

  • 首页pages/Index.ets
ts 复制代码
// 导入页面路由模块,它提供了页面间跳转的功能
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代码
ts 复制代码
// 导入页面路由模块,用于页面间的导航
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框架的理解,也锻炼了在鸿蒙系统上进行应用开发的实践能力。通过实际操作,学会了如何设置项目、准备素材、编写代码以及测试应用,为未来更复杂的项目打下了坚实的基础。
相关推荐
火狮22 分钟前
鸿蒙Next API 12开发,使用@ohos/axios进行HTTP请求
http·华为·harmonyos
SuperHeroWu72 小时前
【HarmonyOS】HarmonyOS和React Native混合开发 (一)之环境安装
react native·harmonyos·鸿蒙·开发环境·环境安装·rn·混合开发
轻口味3 小时前
【每日学点鸿蒙知识】AVCodec、SmartPerf工具、web组件加载、监听键盘的显示隐藏、Asset Store Kit
前端·华为·harmonyos
无处安放的波澜3 小时前
【HarmonyOS 5.0】第十二篇-ArkUI公共属性(一)
华为·harmonyos·arkts·鸿蒙·鸿蒙系统
李洋-蛟龙腾飞公司3 小时前
HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据文件资产迁移
分布式·华为·harmonyos
大土豆的bug记录4 小时前
鸿蒙历史搜索功能:tag标签根据文字宽度自动换行 展示更多
华为·harmonyos
轻口味4 小时前
【每日学点鸿蒙知识】Charles抓包、lock文件处理、WebView组件、NFC相关、CallMethod失败等
华为·harmonyos
凯子坚持 c5 小时前
编程新选择:深入了解仓颉语言的优雅与高效
华为
一个处女座的程序猿O(∩_∩)O5 小时前
开源鸿蒙 5.0 正式版发布
华为·harmonyos
程序猿会指北6 小时前
【鸿蒙(HarmonyOS)性能优化指南】内存分析器Allocation Profiler
性能优化·移动开发·harmonyos·openharmony·arkui·组件化·鸿蒙开发