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

news2024/11/27 2:26:22

目录

  • 任务目标
  • 任务分析
  • 任务实施
    • 1.新建工程项目HMLogin
    • 2.设计登录页面Index.visual
    • 3.设计第二个页面SecondPage
    • 4.修改Index.ets代码
    • 5.修改SecondPage.ets代码
    • 6.运行工程

任务目标

设计一个简单的登录页面,要求可以将第一页的登录信息,传递到第二个页面,界面如图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.运行工程

测试运行效果

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

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

相关文章

VMware ESXi 技术

目录 一、VMware ESXi安装 1. 在VMware WorkStation中创建一台虚拟机 2. 进入VMware ESXi控制台 3. 配置VMware ESXi网络 二、使用Web网页端登录管理ESXi 1. 分配许可证密钥(选做) 2. 管理ESXi 三、VMware ESXi控制台 1. 创建虚拟机 2. 定制虚拟…

静态链表详解(C语言版)

顺序表和链表的优缺点 顺序表和链表是两种基本的线性数据结构,它们各自有不同的优缺点,适用于不同的应用场景。 顺序表(Sequential List,通常指数组) 优点: 随机访问:可以通过索引快速访问任…

【Linux】服务器被work32病毒入侵CPU占用99%

文章目录 一、问题发现二、问题解决2.1 清楚病毒2.2 开启防火墙2.3 修改SSH端口2.4 仅使用凭据登录(可选) 一、问题发现 我的一台海外服务器,一直只运行一项服务(你懂的),但是前不久我发现CPU占用99%。没在…

R语言学习笔记1-介绍与安装

R语言学习笔记1-介绍与安装 简介应用领域R语言优势安装步骤(linux版本)在R脚本中绘制简单的条形图示例 简介 R语言是一种非常强大和流行的据分析和统计建模工具。它是一种开源的编程语言和环境,专门设计用于数据处理、统计分析和可视化。 应…

DP(动态规划)【2】 最大连续子列和 最长不降子序列

1.最大连续子列和 #include <iostream> #include <vector> #include <cmath> #include <string> #include <cstring> #include <queue> using namespace std; const int N10002,maxn10;int n,m,k,f[N]{0},dp[N]{0};int main() {scanf(&quo…

JavaParser抽取测试用例对应的被测方法

背景介绍 博主目前要做的工作需要将一个java项目的所有RD手写的测试用例和被测方法对应起来&#xff0c;最后将得到的结果存入一个json文件。 本教程以项目GitHub - binance/binance-connector-java 为例。 结果展示 最终会得到一个 funcTestMap.json&#xff0c;里面存放着…

深度学习实验第T2周:彩色图片分类

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 目录 一、前言 目标 二、我的环境&#…

煤安防爆手机在煤矿井下使用时需要符合什么标准

煤安防爆手机在煤矿井下使用时&#xff0c;需符合严格的防爆安全标准&#xff0c;如煤安MA防爆合格证&#xff0c;以确保在易燃易爆环境中安全无虞。同时&#xff0c;手机还需具备防尘防水、抗冲击等环境适应性要求&#xff0c;以及优异的通信性能&#xff0c;以满足煤矿工作的…

python 获取遮挡窗口界面并操作窗口

有时候我们需要程序自动化帮我们处理一些事情,这时候我们会想到使用按键精灵等一些可以模拟人工操作的软件代替我们劳动,但是,这种操作有个前提就是需要将操作界面置于最顶层,这样就会影响我们做其他事情,这时我们就不希望操作界面置于最外层,影响我们做其他操作。 今天…

JAVA毕业设计145—基于Java+Springboot+vue+uniapp的驾校预约小程序(源代码+数据库+15000字论文)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvueuniapp的驾校预约小程序(源代码数据库15000字论文)145 一、系统介绍 本项目前后端分离&#xff0c;分为用户、教练、管理员三种角色 1、用户&#xff1a; …

技术分享:分布式数据库DNS服务器的架构思路

DNS是企业数字化转型的基石。伴随微服务或单元化部署的推广&#xff0c;许多用户也开始采用分布式数据库将原来的单体数据库集群服务架构拆分为大量分布式子服务集群&#xff0c;对应不同的微服务或服务单元。本文将从分布式数据库DNS服务器的架构需求、架构分析两方面入手&…

今天起,全球所有Mac用户可免费安装桌面版ChatGPT

在 macOS 上&#xff0c;用户在安装新的 ChatGPT 应用程序后&#xff0c;使用 Option Space 的键盘组合即可快速调用 ChatGPT。 刚刚&#xff0c;OpenAI 宣布推出适用于 macOS 的应用程序。 虽然 Mac 应用程序尚未在 Mac App Store 中提供&#xff0c;但用户可以直接从 Open…

计算机网络之OSI七层体系结构

目录 1.物理层 1.1物理层组成 1.2物理层功能 1.3物理层服务 1.4物理层标准 1.5物理层接口 2.数据链路层 2.1基于物理层的问题 2.2数据链路层功能 2.3数据链路层服务 2.4数据链路层协议 3.网络层 3.1基于DL层的问题 3.2网络层功能 3.3网络层服务 3.4网络层协议 …

饮料添加剂光照试验太阳光模拟器试验箱

饮料添加剂光照试验是一种用来评估饮料在光照条件下稳定性的实验方法。这个过程通常包括以下几个步骤&#xff1a; 样品准备&#xff1a; 首先&#xff0c;将饮料密封在市售包装或近似市售包装中&#xff0c;确保包装的完整性和密封性。 光照条件设置&#xff1a; 将封装好的…

开源大模型RAG企业本地知识库问答机器人-ChatWiki

ChatWiki ChatWiki是一款开源的知识库 AI 问答系统。系统基于大语言模型&#xff08;LLM &#xff09;和检索增强生成&#xff08;RAG&#xff09;技术构建&#xff0c;提供开箱即用的数据处理、模型调用等能力&#xff0c;可以帮助企业快速搭建自己的知识库 AI 问答系统。 开…

idea2024使用springboot3.x系列新建java项目,使用jdk17,启动项目报错

身为一名开发人员&#xff0c;敲代码无数&#xff0c;竟被一个小小启动给我卡了大半天&#xff0c;太丢脸了 报错一&#xff1a;Field infoSysRepository in com.erectile.Impl.PersonalInfoServiceImpl required a bean of type ‘com.erectile.jpa.repository.InfoSysReposit…

短视频视频配:成都柏煜文化传媒有限公司

短视频视频配&#xff1a;​艺术与技术的完美融合 在短视频盛行的当下&#xff0c;一个优秀的短视频作品不仅仅依赖于精彩的内容&#xff0c;更需要在视频配上做足功夫。视频配&#xff0c;作为短视频的重要组成部分&#xff0c;涵盖了音效、配乐、字幕等多个方面&#xff0c;…

Spring Boot中 CommandLineRunner 与 ApplicationRunner作用、区别

CommandLineRunner 和 ApplicationRunner 是 Spring Boot 提供的两种用于在应用程序启动后执行初始化代码的机制。这两种接口允许你在 Spring 应用上下文完全启动后执行一些自定义的代码&#xff0c;通常用于执行一次性初始化任务&#xff0c;如数据库预填充、缓存预热等。 Co…

Docker 部署 MariaDB 数据库 与 Adminer 数据库管理工具

文章目录 MariaDBmariadb.cnf开启 binlog Adminerdocker-compose.ymlAdminer 连接 MariaDB MariaDB MariaDB是一个流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是MySQL的一个分支和替代品。 官网&#xff1a;https://mariadb.com/镜像&#xff…

拆分盘投资策略解析:机制、案例与风险考量

一、引言 随着互联网技术的迅猛发展和金融市场的不断创新&#xff0c;拆分盘这一投资模式逐渐崭露头角&#xff0c;成为投资者关注的焦点。它基于特定的拆分策略&#xff0c;通过调整投资者持有的份额和单价&#xff0c;实现了看似稳健的资产增长。本文旨在深入探讨拆分盘的运…