鸿蒙登录页面及页面跳转的设计

任务目标

设计一个简单的登录页面,要求可以将第一页的登录信息,传递到第二个页面,界面如图1所示。
图1 鸿蒙登录界面图

图1 鸿蒙登录界面图

任务分析

本任务主要考察鸿蒙应用界面设计及界面间的数据传递。在不熟练的情况下,可以使用DevEco Studio的Super Visual功能进行设计,设计完成后再修改ArkTS代码。

任务实施

1.新建工程项目HMLogin

如图2所示,修改工程名、包名,打开Super Visual开关,单击Finish。
鸿蒙登录界面配置工程窗口

图2 鸿蒙登录界面配置工程窗口

2.设计登录页面Index.visual

从Components区将两个TextInput,一个Button用鼠标拖拽到界面上,如图10-33所示。依次选中各个控件,修改Properties。其中“账号”TextInput的Placeholder属性修改为“请输入账号”,magrinTop修改改为20vp;“密码”TextInput的Placeholder属性修改为“请输入密码”,magrinTop修改为20vp;“登录”Button的Label属性修改为“登录”,FontSize修改为32fp。需要注意的是有些属性在Super Visual中无法修改,将在ArkTS代码中进行修改。修改完后的界面如图10-34所示,单击右上方的转换图标 ,将其转为ArkTS代码。
Index.visual设计窗口

图3 Index.visual设计窗口

界面设计完成效果图

图4 界面设计完成效果图

3.设计第二个页面SecondPage

右击entry/src/main/ets/pages,New→Visual→Page。在弹出的窗口中修改Visual name为SecondPage,单击Finish,如图10-35、图10-36所示。
新建Super Visual界面

图5 新建Super Visual界面

配置Visual Page窗口

图6 配置Visual Page窗口

使用和上一步骤相同的方法,添加一个Text和一个Button,修改其属性,修改后效果如图10-37所示,单击转换图标 ,生成ArkTS代码。
第二个界面效果图

图7 第二个界面效果图

4.修改Index.ets代码

在Index.ets代码中,首先添加TextInput输入获取逻辑,实现onChange()方法,在该方法中存储修改的信息;其次,添加Button单击事件,实现onClick()方法,在该方法中使用router.pushUrl()方法跳转到第二个页面,同时传递信息,代码如下:

import router from '@ohos.router'
@Entry
@Component
struct Index {
  @State message: string = '登录'
  @State userName: string = ''
  @State password: string = ''

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(30)
          .fontWeight(FontWeight.Bold)

        TextInput({ placeholder:"请输入账号" })
          .width("100%")
          .height("48vp")
          .margin({ left: '50vp',right:'50vp',top:"30vp",bottom:"30vp"} )
          .placeholderColor("#99182431")
          .placeholderFont({ size: "16fp"})
          .fontSize("16fp")
          .padding({ left: "0vp" })
          .border({
            width: { bottom: "0vp" },
            color: "#33000000",
            radius: "10vp"
          })
          .onChange((value: string) => {
            this.userName = value
          })

        TextInput({ placeholder:"请输入密码" })
          .width("100%")
          .height("48vp")
          .margin({ left: '50vp',right:'50vp',bottom:"30vp"} )
          .placeholderColor("#99182431")
          .placeholderFont({ size: "16fp"})
          .fontSize("16fp")
          .padding({ left: "0vp" })
          .type(InputType.Password)
          .border({
            color: "#33000000",
            radius: "10vp"
          })
          .onChange((value: string) => {
            this.password = value
          })

        // 添加按钮,触发跳转
        Button('登录')
          .fontSize(20)
          .onClick(() => {
            router.pushUrl({
              url: 'pages/SecondPage',
              params: {
                src: this.userName+':'+this.password,
              }
            })
          })
      }
      .width('100%')
    }
    .height('100%')
    .backgroundColor("#05000000")
  }
}

5.修改SecondPage.ets代码

在SecondPage.ets代码中,首先将前一页面的信息取出,并显示在Text上,使用router.getParams()方法获取前一页面的信息;添加“返回”Button的逻辑,实现方法和前一步骤类似,关键代码如下:

import router from '@ohos.router'
@Entry
@Component
struct SecondPage {
  @State message: string = '第二个页面'
  @State src: string = router.getParams()?.['src']

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)

        // 显示传参的内容
        Text(this.src)
          .fontSize(30)

        // 添加按钮,触发返回
        Button('返回')
          .fontSize(20)
          .onClick(() => {
            router.back()
          })
      }
      .width('100%')
    }
    .height('100%')
    .backgroundColor("#05000000")
  }
}

Index.ets代码和SecondPage.ets代码中还修改了this.message,设置了整体布局的backgroundColor,本任务完整项目代码请查看本书资源。

6.运行工程

测试运行效果

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工程师老罗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值