当前位置: 首页 > news >正文

鸿蒙项目云捐助第四讲鸿蒙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云捐助项目中登陆注册页面,后面持续完成首页、捐助页等相关的功能页面,请持续关注。

相关文章:

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

根据app的操作流程可以知道,当启动页启动后,点击启动页中的页面就进入到了登录页。本讲就是针对于登录注册页的实现,实现的界面参考下图。 这里根据这个素材的参考实现鸿蒙Next云捐助的登录页。 一、鸿蒙Next云捐助登录页的实现 在项目中继…...

Windows本地搭建Redis集群(集群模式)

手打不易,如果转摘,请注明出处! 注明原文:https://blog.csdn.net/q258523454/article/details/144477957 前言 Redis版本:redis 5.0.14.1 Windows版本:Windows10 本文只讲集群模式 1. 安装Redis 1.1 …...

使用FastGPT制做一个AI网站日志分析器

越来越的多网站面临每天上千次的扫描和各类攻击,及时发现攻击IP,并有效的屏蔽不良访问成为网站安全的重要保障,这里我们使用AI来完成对网站日志的日常分析。 我们来使用FastGPT来制做一个AI网站日志析器,下面就开始: …...

探索 Echarts 绘图:数据可视化的奇妙之旅

目录 一、Echarts 初印象 二、搭建 Echarts 绘图环境 三、绘制第一个图表:柱状图的诞生 四、图表的美化与定制:让数据更具吸引力 1. 主题切换:一键变换风格 2. 颜色调整:色彩搭配的艺术 3. 标签与提示框:丰富信…...

网络基础(IP和端口)

网络连接的核心-TCP/IP体系结构(IP和端口) 什么是IP地址 1.IP地址是电子设备(计算机)在互联网上的唯一标识 2.用来在互联网中寻找电脑 IP 地址就像是你家的地址一样,不过它是在网络世界里用来找到一台电脑或者其他网…...

UE4与WEB-UI通信

前端HTML代码 <!DOCTYPE html><html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"><title>test web ui</title><script src"https://cdn.b…...

前缀和与差分算法详解

定义 前缀和是一种数据预处理技术&#xff0c;它指的是从数组的第一个元素开始&#xff0c;到当前元素为止的所有元素的和。这种技术可以快速计算任意区间内元素的和&#xff0c;而不需要每次都从头开始累加。 差分则是前缀和的逆运算&#xff0c;它主要用于处理对数组某个区…...

《深入探究:C++ 在多方面对 C 语言实现的优化》

目录 一、C 在 C 上进行的优化二、C 关键字&#xff08;C 98&#xff09;三、C 的输入输出1. cin 和 cout 的使用2. cin、cout 和 scanf()、printf() 的区别 三、命名空间1. 命名空间的使用2. 嵌套命名空间3. 在多个头文件中使用相同的命名空间 四、函数缺省值1. 缺省值的使用2…...

React 第十六节 useCallback 使用详解注意事项

useCallback 概述 1、useCallback 是在React 中多次渲染缓存函数的 Hook&#xff0c;返回一个函数的 memoized的值&#xff1b; 2、如果多次传入的依赖项不变&#xff0c;那么多次定义的时候&#xff0c;返回的值是相同的,防止频繁触发更新&#xff1b; 3、多应用在 父组件为函…...

使用C#和OPenCV实现圆形检测

文章目录 霍夫变换使用 OpenCV 和 C# 实现圆形检测 霍夫变换 在计算机视觉中&#xff0c;圆形检测是一个常见且有用的任务&#xff0c;特别是在物体识别、图像分析和图形处理等领域。OpenCV 是一个强大的开源计算机视觉库&#xff0c;它提供了许多工具来实现不同的图像处理功能…...

评估一套呼叫中心大模型呼入机器人的投入回报比?

评估一套呼叫中心大模型呼入机器人的投入回报比&#xff1f; 原作者&#xff1a;开源呼叫中心FreeIPCC&#xff0c;其Github&#xff1a;https://github.com/lihaiya/freeipcc 评估一套呼叫中心大模型呼入机器人的投入回报比&#xff08;ROI&#xff09;&#xff0c;是一个多…...

十八、Label 和 Selector

Label 是键值对,用来标识 Kubernetes 资源(如 Pod、Node、Service 等)的属性。它们并不直接影响资源的行为,但可以帮助用户快速组织、查询和操作这些资源。标签可以用于选择、过滤和分组。 Label: 标签对 k8s 中各种资源进行分类、分组,如Pod和节点进行分组。通过添加kev…...

实现按键按下(低电平)检测到下降沿

按照流程进行编程 步骤1&#xff1a; 初始化函数 包括时基工作参数配置 输入通道配置 更新中断使能 使能捕获、捕获中断及计数器 HAL_TIM_IC_Init(&ic_handle) //时基参数配置 HAL_TIM_IC_ConfigChannel(&ic_handle,&ic_config,TIM_CHANNEL_2) //输…...

解析 SSM 垃圾分类系统,助力生态平衡

前 言 垃圾分类系统&#xff0c;传统的垃圾分类系统模式还处于线下管理阶段&#xff0c;管理效率极低。随着垃圾分类系统信息的不断增多&#xff0c;传统基于线下管理模式已经无法满足当前用户需求&#xff0c;随着信息化时代的到来。通过该系统的设计&#xff0c;管理员可以管…...

软件工程 设计的复杂性

复杂性代表事件或事物的状态&#xff0c;它们具有多个相互关联的链接和高度复杂的结构。在软件编程中&#xff0c;随着软件设计的实现&#xff0c;元素的数量以及它们之间的相互联系逐渐变得庞大&#xff0c;一下子变得难以理解。 如果不使用复杂性指标和度量&#xff0c;软件…...

Nginx 限制只能白名单 uri 请求的配置

实际生产项目中&#xff0c;大多数时候我们会将后端的 http 接口通过前置 nginx 进行反向代理&#xff0c;对互联网用户提供服务。往往我们后端服务所能提供的接口服务是大于互联网用户侧的实际请求的接口地址数量的&#xff08;例如后端服务一共有100个api接口&#xff0c;经过…...

QT c++ 同时使用sqlite 和mysql数据库的问题

在项目开发中&#xff0c;同时使用了sqlite 和mysql数据库&#xff0c;分开这两部分运行功能都正常&#xff0c;但是一起运行&#xff0c;就异常&#xff0c;sqlite部分不能使用。 现象&#xff1a;出现如下提示 QSqlDatabasePrivate::addDatabase: duplicate connection nam…...

redis集群 服务器更换ip,怎么办,怎么更换redis集群的ip

redis集群 服务器更换ip&#xff0c;怎么办&#xff0c;怎么更换redis集群的ip 1、安装redis三主三从集群2、正常状态的redis集群3、更改redis集群服务器的ip 重启服务器 集群会down4、更改redis集群服务器的ip 重启服务器 集群down的原因5、更改redis集群服务器的ip后&#xf…...

【C++习题】19.数组中第K个大的元素

题目&#xff1a;数组中第K个大的元素 链接&#x1f517;&#xff1a;数组中第K个大的元素 题目&#xff1a; 代码&#xff1a; class Solution { public:int findKthLargest(vector<int>& nums, int k) {// 将数组中的元素先放入优先级队列中priority_queue<i…...

JIS-CTF: VulnUpload靶场渗透

JIS-CTF: VulnUpload来自 <https://www.vulnhub.com/entry/jis-ctf-vulnupload,228/> 1,将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 靶机IP地址192.168.23.162&#xff0c;攻击机IP地址192.168.23.140…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...