HarmonyOS页面跳转实验:ArkTS登录跳转实操

鸡腿大王 3 阅读 ArkTsArkUI

一、实验目标

本实验作为HarmonyOS应用开发入门实验,将借助HarmonyOS工程创建后的初始代码为基础,在此进行简单代码修改,从而实现HarmonyOS页面跳转的实操练习。通过这个实验,我们可以熟悉开发工具的具体操作,为后续实验开展奠定基础。

二、实验场景

开发者尝试在一个新的HarmonyOS应用中,通过ArkTS语言构建并点击一个页面A(假设为登录页面),然后模拟跳转成功过程,进入下一个页面B(假设为登陆成功页面)。具体需要完成以下步骤:

·       成功创建HarmonyOS应用工程;

·       使用ArkTS语言构建两个应用界面方式;

·       实现登录页面跳转功能。

具体页面样式如下图所示:

三、实验步骤

1. 创建HarmonyOS项目工程

1. 打开DevEco Studio软件(请使用DevEco Studio 5.0.5.200及以上版本工具),点击"文件 > 新建 > 新建项目",如下图所示:

2. 选择工程模板,根据工程创建向导,选择创建Application应用。选择"Empty Ability"模板,然后单击Next。

3. 配置项目工程信息,进入配置工程界面,Project name表示工程名称,此处可以设置为"Demo1_PageJump";Compatible SDK表示兼容的最低API Version,此处以选择"6.0.1(21)"为例。建议参考图中参数设置:

4. 工程创建完成后,DevEco Studio会自动进行工程的同步操作,等待同步完成后便进入工程详情,进行应用开发。此时电脑必须联网,才可顺利完成工程的同步操作。结果如下图所示:

5. 工程创建完成会自动生成"Hello World"示例代码和相关资源。可以点击工具右侧预览器按钮,即可拉起预览器工具,展示示例代码页面。结果如下图所示:

2. 修改默认页面布局

1. 首先修改Index.ets中的文字显示内容,Text组件使用message变量用来存放组件所显示文本内容。因此,我们只需要修改message变量的值,即可改变Text文本的组件内容:

@State message: string = '登录页面'

2. 然后,清空build()函数内页面UI样式代码,添加下方具体代码:

// 自定义组件的UI构建入口方法 用于描述组件的UI结构
build() {
  // 创建横向布局容器 子组件将按水平排列
  Row() {
    // 创建纵向布局容器 子组件将按垂直方向排列
    Column() {
      // 文本组件 绑定状态变量message,显示其内容
      Text(this.message)
        // 字体大小像素
        .fontSize(40)
        // 字体加粗
        .fontWeight(FontWeight.Bold)
    }
    // 纵向布局容器100%宽度
    .width('100%')
  }
  // 设置横向容器布局100%高度
  .height('100%')
}

3. 在此基础上,添加一个Button组件,作为按钮响应用户点击,从而实现跳转到另一个页面。
// 添加按钮,以响应用户点击
Button('跳转')
  .fontSize(30)//字体大小
  .type(ButtonType.Normal)//按钮类型:Capsule胶囊(默认) Circle圆形 Normal普通
  .margin({ top: 20 })//顶部外边距为20vp
  .backgroundColor('#0D9FFB')//按钮背景色
  .width('50%')//按钮宽度
  .height(50)//按钮高度

3. 创建新的ArkTS Page页面

1. 在Pages文件夹下新建一个ArkTS File页面,选中Pages文件夹,右击新建->Page,选择"Empty Page"。

2. 输入Name为Second。系统自动生成Second.ets文件,并且自动配置成功第二个页面文件的路由。

3. 在"项目"窗口,打开"entry > src > main > resources > base > profile",在main_pages.json文件中的"src"下可以查看第二个页面的路由"pages/Second"。

4. 完成第二个页面

1. 参照第一个页面,在第二个页面添加Text组件、Button组件等,并设置其样式。"Second.ets"文件的代码如下

@Entry //此装饰器标记应用入口组件
@Component//此装饰器标记定义自定义组件
// 声明组件结构体
struct Second {
  // 响应式状态变量:存储页面标题
  @State message: string = '登录成功页面'
 
  // UI构建入口方法
  build() {
    // 横向布局容器
    Row() {
      // 纵向布局容器
      Column() {
        // 页面标题文本
        Text(this.message)
          // 文本字号
          .fontSize(40)
          // 文本加粗
          .fontWeight(FontWeight.Bold)
        // 返回按钮
        Button('返回')
          // 按钮文字字号
          .fontSize(30)
          // 按钮为胶囊样式
          .type(ButtonType.Capsule)
          // 按钮顶部外边距
          .margin({ top: 20 })
          // 按钮背景色
          .backgroundColor('#0D9FFB')
          // 按钮宽度为父容器50%
          .width('50%')
          // 按钮高度
          .height(50)
      }//column{}
      // 纵向容器宽度占满父容器
      .width('100%')
    }//row{}
    // 横向容器高度占满父容器
    .height('100%')
  }//build{}
}//Struct{}

5. 实现页面跳转

1. ArkTS页面间的跳转,可以通过页面路由router来实现,需要导入router模块。

2. 在Index.ets页面中,跳转按钮绑定onClick事件,点击按钮时跳转到Second.ets页面。

3. 打开Index.ets页面,定位Button按钮,如下添加onClick事件:

// 导入页面路由模块
import { router } from '@kit.ArkUI';
 
......
 
// 跳转按钮绑定onClick事件,点击时跳转到第二页
.onClick(() => {
  // 跳转到第二页
  router.pushUrl({ url: 'pages/Second' })
})

4. 打开Second.ets页面,定位Button按钮,如下添加onClick事件:

// 导入页面路由模块
import { router } from '@kit.ArkUI';
 
......
 
// 跳转按钮绑定onClick事件,点击时跳转到第二页
.onClick(() => {
  router.back()//导入router包 点击返回按钮回到第一页
})

6. 跳转升级

观察router包下的方法都画了删除线,说明router跳转的方法已不再维护。现在我们使用推荐的方法再完成一次页面跳转。

具体API请参考Class (Router)-@ohos.arkui.UIContext (UIContext)-UI界面-ArkTS API-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者

1. 打开Index.ets页面,定位Button按钮的onClick事件,如下修改:

.onClick(()=>{
  //router.pushUrl({url:'pages/Second'})
  //替换harmony推荐路由方式(Router类)
  this.getUIContext().getRouter()
    .pushUrl({url:'pages/Second'})
})

2. 打开Second.ets页面,定位Button按钮的onClick事件,如下修改:

.onClick(()=>{
  //导入router包 点击返回按钮回到第一页
  //router.back()
  //不导入router包 替换harmony推荐路由方式(Router类)
  //注意:使用getUIContext属性方法在API12及以后版本才能使用
  this.getUIContext().getRouter().back()
})

3. API12及以后Harmony推荐使用Router类替代router包

四、实验结果

点击Index.ets页面的跳转按钮,跳转到Second.ets页面,点击返回按钮,再次跳转回首页。

文档下载

实训2-页面跳转.pdf