鸿蒙项目云捐助第四讲鸿蒙App应用的登陆注册页实现

根据app的操作流程可以知道,当启动页启动后,点击启动页中的页面就进入到了登录页。本讲就是针对于登录注册页的实现,实现的界面参考下图。

这里根据这个素材的参考实现鸿蒙Next云捐助的登录页。

一、鸿蒙Next云捐助登录页的实现

在项目中继续创建login.ets文件,由于login.ets的登陆页面也是显示到app的页面s,这里也要使用@Entry注解。这样建立login.ets的初始结构如下。

这里在build()方法中使用弹性盒子组件Flex,在Flex组件中分析页面的布局方法,这里使用的是竖向的布局,在Flex组件中通过direction的方向属性来决定是否是竖向还是横向,具体设置方法可以这样定义。

Flex({
    direction:FlexDirection.Column})
这里Column表示的是竖向,
Row表示的是横向。

根据前面登录页的模板,需要人头的图像和文字竖向排列,也就决定了弹性盒子Flex使用Column竖向排列,在Flex中使用Image的图像组件和Text文字组件。

鸿蒙Next规定所有的文字信息都存放在resources的资源文件夹下,zh-CN的文件夹中可以存放中文的信息,如下图所示。

图中在zh_CN文件夹中,有一个string.json文件,在string.json中定义一个name和value的键值,name定义字符串调用的名字,value表示字符串对应的中文意义。

有了文字的定义后,可以在login.ets的build()方法中定义图像和文字的布局排列方式,如下图所示。

这里在Flex的弹性盒子中使用Image组件和Text组件,两个组件都使用$r进行资源的指定。图片的资源调用app.media.user,文字内容的资源调用app.string.myapp_username。

这里引入的Image图像组件需要定义width的宽度和height的高度,对于图像组件的圆角属性可以使用borderRadius属性方法,参数中指明borderRadius的圆角数字就可以实现。这里引入的Text文字组件需要定义字号fontSize的属性方法,在参数中定义一个字体大小数字就可以。Text文字组件也可以使用fontColor定义字体颜色,这个属性方法中通过“Color.颜色名”指示字体的颜色。Text文字组件的居中使用TextAlign.Center属性方法来实现。

对于在弹性盒子中的Image图像组件和Text文字组件可以实现整体居中,这里通过两个属性,alignItem实现垂直轴的居中,justifyContent实现的是水平轴的居中。具体布局代码如下图所示。

代码中对于水平居中使用justifyContent,对于垂直居中使用alignItems,具体设置居中一般都使用下面的固定属性。

 //设置水平居中
 justifyContent:FlexAlign.Center
//设置垂直居中
alignItems:ItemAlign.Center

在圆角图片和文字的下面是两个输入框,要求用户输入用户名和密码。这里为了防止结构上的错乱,可以把图片组件Image 和文字组件Text收缩一下,如下图所示。

这里布局中又引入一个Flex的弹性盒子,在build()方法中只有一个Flex()的竖向弹性盒子,在鸿蒙Next中,build()方法中只有一个孩子元素。最外层的Flex里面又加入一个Flex的弹性盒子,里面的弹性盒子包含有Image图片组件和Text文字组件,把里面的Flex弹性盒子收缩,这样实现后面的输入框元素不会造成布局混乱。

注意,这里的输入框中是由图片和文字组成的,首先准备两个图片,一个是用户的图片标志,一个是密码的图片标志,通过百度图库中找到的图片标志放在media的文件夹中,如下图所示。

这里先把收集到的图标user_icon的用户图标及key_icon的密码图标放在media的目录下,然后准备文字方面的资源,在resources目录下的zh_CN目录中的string.json文件中定义字符串数据。如下图所示。

这里首先定义一个邮箱的用户名资源,然后在login.ets的登录页面中放置登录框,布局中的代码如下图所示。

这里Flex的弹性盒子组件中包括输入框的图标和输入框的组件,图标采用Image组件,使用width定义Image组件的宽度,输入框和图片组件采用横向排列,Flex弹性盒子声明其方向direction设置为FlexDirection.Row横向布局。对于Flex弹性盒子中的TextInput输入框除了引入placeholder的预置其内容提示外,还定义其圆角属性borderRadius和背景颜色backgroundColor。这里的bordreRadius只定义左上角和左下角为0,这样出现的圆角并不是整个输入框都会圆角,而是某个边出现圆角。backgroundColor的背景颜色为Color.White白色。

下面的密码输入框和用户输入框的布局设置是一样的,不同的是TextField组件多加一个type的属性指定,其type的名称指定为InputType.Password的密码。代码布局如下图所示。

完成密码输入框设置后,最后是一个Button按钮的配置。在Button按钮上也需要设置“立即登录”的按钮,这里设置的文字资源放在resources目录下zh_CN中文文件夹的string.json文件中标明。如下图所示。

在string.json中设置了“立即登录”的文字资源后,就可以在login.ets的最后添加这个Button元素,代码如下图所示。

这里的Button按钮定义了width宽度和height高度,也使用fontSize进行字号的限定, backgroundColor指明了背景颜色,整个按钮也需要margin定义与上面元素的位置,这里引入top属性指明外边距上面的距离。

设置按钮后,最后添加“去注册”功能及“忘记密码”功能的延展。首先从resources目录下zh_CN中文文件夹的string.json文件中标明文字资源。

文字资源定义后,可以从login.ets的build方法中添加“去注册”和“忘记密码”的文本引用,代码如下图所示。

这里的Flex使用了FlexDirection.Row的横向布局,需要注意的是,这里使用了FlexAlign.SpaceBetween进行两个元素的两端对齐功能,这样两个元素的分配是左边一个,右边一个,SpaceBetween的两端对齐功能也是很重要的。

这样,登录页面就实现了,实现后的页面预览效果如下。

登录页面完成后,复制此页面,在项目的pages页面中粘贴成register.ets的注册页,并改变Register.ets代码中struct后面的名字为Register。代码如下图所示。

这里完成了鸿蒙Next云捐助项目中登陆注册页面,后面持续完成首页、捐助页等相关的功能页面,请持续关注。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大屏开源项目go-view二次开发1----环境搭建(C#)

最近公司要求做一个大屏的程序用于展示公司的产品,我以前也没有相关的经验,最糟糕的是公司没有UI设计的人员,领导就一句话要展示公司的产品,具体展示的内容细节也不知道,全凭借自己发挥。刚开始做时是用wpf做的&#x…

WHLUG丨deepin、华中科技大学开放原子开源俱乐部、 RustSBI 和清华大学开源操作系统训练营共话开源新生代成长之路

2024年11月30日下午,由 deepin(深度)社区联合华中科技大学开放原子开源俱乐部、 RustSBI 开源社区和清华大学开源操作系统训练营共同举办的WHLUG(武汉Linux用户组)线下沙龙在华中科技大学成功举办。 本次活动聚集了50余…

操作系统的基本认识

操作系统的感性认识 操作系统这个词可能或多或少听说过,比如windows, linux, macOS。这些其实都是工程师们经过实践后的具象化产物。而操作系统原理这六个字就是操作系统的抽象化,更准确的说,操作系统原理是很理论化的东西。举一个不是很恰当…

强化学习Q-learning及其在机器人路径规划系统中的应用研究,matlab代码

一、Q-learning 算法概述 Q-learning 是一种无模型的强化学习算法,它允许智能体(agent)在没有环境模型的情况下通过与环境的交互来学习最优策略。Q-learning的核心是学习一个动作价值函数(Q-function),该函…

微信小程序横屏页面跳转后,自定义navbar样式跑了?

文章目录 问题原因:解决方案: 今天刚遇到的问题,横屏的页面完成操作后跳转页面后,自定义的tabbar样式乱了,跑到最顶了,真机调试后发现navbar跑到手机状态栏了,它正常应该跟右边胶囊一行。 知道问…

分布式 Paxos算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & Paxos算法 & 总结》《分布式 & Paxos算法 & 问题》 参考文献 《图解超难理解的 Paxos 算法(含伪代码)》《【超详细】分布式一致性协议 - Paxos》 Basic-Paxos 基础帕克索斯算法…

10.qml使用 shadereffect 实现高斯模糊

目录 高斯模糊sigma获取加权均值获取 高斯二维公式实现高斯一维公式实现使用总结 高斯模糊 高斯模糊应用领域我就不过多讲解,想了解自己去了解 高斯模糊有 一维公式 二维公式 当然我们图像是二维的 但是实际上二维公式用于计算那是消耗大量的算力的&#xff0c…

从 CephFS 到 JuiceFS:同程旅游亿级文件存储平台构建之路

随着公司业务的快速发展,同程旅行的非结构化的数据突破 10 亿,在 2022 年,同程首先完成了对象存储服务的建设。当时,分布式文件系统方面,同程使用的是 CephFS,随着数据量的持续增长,CephFS 的高…

相机测距原理

基础概念的回顾 焦距的定义 焦距是指透镜或镜头的光学中心(通常是透镜的几何中心)到其焦点的距离。 焦点是光线的交点,它指的是透镜或镜头聚焦所有入射光线后汇聚的位置。焦点的位置与透镜的曲率和光线的入射角度相关。就是说所有光线经过…

AOF和RDB【Redis持久化篇】

文章目录 1.什么是持久化?2.RDB3.AOF 1.什么是持久化? Redis是跑在内存里的,当程序重启或者服务器崩溃,数据就会丢失,如果业务场景希望重启之后数据还在,就需要持久化,即把数据保存到可永久保存…

2024-12-14 学习人工智能的Day35 卷积神经网络.阶段项目

卷积神经网络项目实现 关于项目实现的文档说明书,三个要素:数据、模型、训练 1、项目简介。 1.1 项目名称 ​ 基于CNN实现扑克牌花色的小颗粒度分类 1.2 项目简介 ​ 该项目旨在通过卷积神经网络(CNN)实现扑克的小颗粒度分类…

【鸿蒙实战开发】数据的下拉刷新与上拉加载

本章介绍 本章主要介绍 ArkUI 开发中最常用的场景下拉刷新, 上拉加载,在本章中介绍的内容在实际开发过程当中会高频的使用,所以同学们要牢记本章的内容。下面就让我们开始今天的讲解吧! List 组件 在 ArkUI 中List容器组件也可以实现数据滚动的效果&a…

MR30分布式 IO 模块:硅晶行业电池片导片机的智能 “心脏”

硅晶产业作为全球能源和电子领域的基石,其生产规模庞大且工艺复杂。从硅料的提纯、拉晶,到硅片的切割、电池片的制造,每一个环节都要求高精度与高稳定性。在电池片生产环节,导片机承担着硅片传输与定位的重要任务,其运…

MAC虚拟机上安装WDA环境

MAC虚拟机上安装WDA环境 一、MAC虚拟机切换root权限二、macOS上安装xcode若你的macOS系统可以在appstore下载安装若你安装的macOS系统版本太低,无法在appstore上安装xcode 三、macOS上安装WebDriverAgent四、使用xcode配置WDA安装到手机上高版本系统支持 一、MAC虚拟…

个人ffmpeg笔记(一)

环境安装 QT环境安装 运行qt…run安装 下载地址:https://download.qt.io/archive/qt/ 下载地址:https://download.qt.io/archive/qt/5.12/5.12.10/ sudo apt install --reinstall libxcb-xinerama0 解决xcb问题 Ubuntu16.04打开Qt显示/home/user/.co…

【网络】传输层协议UDP/TCP网络层IP数据链路层MACNAT详解

主页:醋溜马桶圈-CSDN博客 专栏:计算机网络原理_醋溜马桶圈的博客-CSDN博客 gitee:mnxcc (mnxcc) - Gitee.com 目录 1.传输层协议 UDP 1.1 传输层 1.2 端口号 1.3 UDP 协议 1.3.1 UDP 协议端格式 1.3.2 UDP 的特点 1.3.3 面向数据报 1…

WordPress插件 Download-block-plugin下载按钮图标美化

WordPress插件 Download-block-plugin下载按钮图标美化

分布式 漏桶算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 漏桶算法 & 总结》《分布式 & 漏桶算法 & 问题》 概述 简介 LBA Leaky Bucket Algorithm 漏桶算法是一种流行于网络通信领域的流量控制/频率限制算法。漏桶算法的核心原理是通过一个概念上的“漏桶”来…

04面向对象篇(D4_OOT(D1_OOT - 面向对象测试))

目录 一、 面向对象影响测试 1. 封装性影响测试 2. 继承性影响测试 3. 多态性影响测试 二、 面向对象测试模型 三、 面向对象分析测试 1. 对象测试 2. 结构测试 3. 主题测试 4. 属性和实例关联测试 5. 服务和消息关联测试 四、面向对象设计测试 1. 对认定类测试 …

群控系统服务端开发模式-应用开发-前端操作记录功能展示

一、创建操作记录展示视图 在根目录下src文件夹下views文件夹下permission文件夹下创建token文件夹&#xff0c;在token文件夹下&#xff0c;新建index.vue文件&#xff0c;代码如下&#xff1a; <template><div class"app-container"><div class&qu…