鸿蒙开发(九)UI实战 - 线性布局实现登录界面

devtools/2024/9/23 8:29:19/

    前面我们花了很多章去讲述鸿蒙开发的UI,包括布局和控件等。本篇,我们综合使用布局和控件,完成一个简单的用户登录界面。

一、布局选择

    简单回忆下我们掌握的几种布局,线性布局的控件横向或纵向线性排列,非常适合实现登录界面,因此我们使用线性布局来实现登录界面。

二、登录界面实现 

1、创建UIAbility

    创建LoginAbility,并且设置为Launcher ability:

    可以看到,module.json5里面已经自动加上了skills:xxx.system.home,入口Ability只能有一个,记得把默认的EntryAbility的skills删掉: 

2、创建页面

    推荐使用New -Page的方式创建页面,这样会在main_pages自动添加页面名称,防止出现页面加载空白的case(我之前的demo就直接复制的Index,然后main_pages没增加页面信息,加载白屏。。。):

 3、实现登录页面UI代码

    如下代码实现了一个简单的登录界面,这是迄今为止写的最长的一个页面了,不过代码仍然比较简单,也比较好理解:

import hilog from '@ohos.hilog';
import common from '@ohos.app.ability.common';@Entry
@Component
struct Login {@State passport: string = '';@State password: string = '';private context = getContext(this) as common.UIAbilityContextbuild() {Column({ space: 5 }) {Row() {Text('账号:')TextInput({ placeholder: '请输入账号' }).width('60%').height(40).onChange((data: string) => {this.passport = data})}Row() {Text('密码:')TextInput({ placeholder: '请输入密码' }).width('60%').height(40).onChange((data: string) => {this.password = data})}Button('登录').width('50%').height(40).margin({ top: 20 }).onClick(() => {this.doLogin()})}.width('100%').height('80%').justifyContent(FlexAlign.Center)}doLogin() {if (this.password || this.password == '') {hilog.info(0x0000, 'Login', 'password is null');return}if (this.passport || this.passport == '') {hilog.info(0x0000, 'Login', 'passport is null');return}hilog.info(0x0000, 'Login', 'passport:', '%{public}s', this.passport);hilog.info(0x0000, 'Login', 'password:', '%{public}s', this.password);// 触发login事件this.context.eventHub.emit('login')}
}

预览效果如下:

     本篇,使用线性布局实现了一个简单的用户登录界面。后面,我还会结合各种各样的场景,去进行更多的UI实战。另外,在这里也提醒一下初学者,布局或控件的API没必要死记硬背,用到哪个布局或控件直接点进源码去看看,多看看源码也就记住了。

    最后,分享一款免费看热门电影和电视剧的app,仅限Android:


http://www.ppmy.cn/devtools/19896.html

相关文章

未来已来:解锁AGI的无限潜能与挑战

未来已来:解锁AGI的无限潜能与挑战 引言 假设你有一天醒来,发现你的智能手机不仅提醒你今天的日程,还把你昨晚做的那个奇怪的梦解释了一番,并建议你可能需要减少咖啡摄入量——这不是科幻电影的情节,而是人工通用智能…

Docker在Windows与CentOS上的安装

这个季节有着无数的热烈,就像是飞鸟对天空的迫切。大家好,今天给大家分享一下关于Docker的安装,那么作为一名软件测试工程师,为什么需要了解Docker并且使用Docker呢?Docker会给我们带来怎样的好处呢? 原因…

41. 【Android教程】Android 手势处理

作为忠实的 Android 系统用户,你应该会经常用到各种手势:点击、长按、双击、缩放、滑动、拖拽、返回等等,可以说丰富的手势可以让用户更加简洁方便的使用 App,甚至直接影响到 App 的使用体验。这些手势都是系统为我们提供的操作方…

视频怎么批量压缩?5个好用的电脑软件和在线网站

视频怎么批量压缩?有时候我们需要批量压缩视频来节省存储空间,便于管理文件和空间,快速的传输发送给他人。有些快捷的视频压缩工具却只支持单个视频导入,非常影响压缩效率,那么今天就向大家从软件和在线网站2个角度介绍…

【Web前端笔记15】Javascript之Math与Date

文章目录 前言 一、Math对象 1.静态属性 2.静态方法一 二、Date1.Date对象 (1)普通函数的用法 (2)构造函数的用法 2.静态方法 总结 前言 在JavaScript编程中,Math对象和Date对象是非常常用的两个对象。Math对象可以帮助我们进行各种数学计算,而Date对象可以帮助我们处理各…

00.Jenkins 基本介绍与安装

Jenkins Jenkins 是一个开源的持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)工具,用于自动化软件开发过程中的构建、测试和部署。它提供了丰富的插件生态系统,可以支持几乎所有主流的开发、构建和部署工具,使得软件开发团队能够更加高效地…

Opencv_14_多边形填充与绘制

绘制多边形: 1)coInvert.polyline_drawing(src); 2)void ColorInvert::polyline_drawing(Mat& image) { Mat canvas Mat::zeros(Size(512, 512), CV_8UC3); Point p1(100, 100); Point p2(150, 100); Point p3(200…

2024全新瀚海跑道:矢量图片迅速养号游戏玩法,每天一小时,日转现200

最初我注意到这种玩法,是因为最近在浏览各大平台的视频时,我发现了一种特殊类型的账号,其养号成功率高达90%。这些账号发布的视频内容和数据非常夸张,而且制作起来非常简单,任何人都可以轻松上手。这些账号主要发布矢量…