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


        前面我们花了很多章去讲述鸿蒙开发的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代码

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

    1. import hilog from '@ohos.hilog';
    2. import common from '@ohos.app.ability.common';
    3. @Entry
    4. @Component
    5. struct Login {
    6. @State passport: string = '';
    7. @State password: string = '';
    8. private context = getContext(this) as common.UIAbilityContext
    9. build() {
    10. Column({ space: 5 }) {
    11. Row() {
    12. Text('账号:')
    13. TextInput({ placeholder: '请输入账号' })
    14. .width('60%')
    15. .height(40)
    16. .onChange((data: string) => {
    17. this.passport = data
    18. })
    19. }
    20. Row() {
    21. Text('密码:')
    22. TextInput({ placeholder: '请输入密码' })
    23. .width('60%')
    24. .height(40)
    25. .onChange((data: string) => {
    26. this.password = data
    27. })
    28. }
    29. Button('登录')
    30. .width('50%')
    31. .height(40)
    32. .margin({ top: 20 })
    33. .onClick(() => {
    34. this.doLogin()
    35. })
    36. }.width('100%').height('80%').justifyContent(FlexAlign.Center)
    37. }
    38. doLogin() {
    39. if (this.password || this.password == '') {
    40. hilog.info(0x0000, 'Login', 'password is null');
    41. return
    42. }
    43. if (this.passport || this.passport == '') {
    44. hilog.info(0x0000, 'Login', 'passport is null');
    45. return
    46. }
    47. hilog.info(0x0000, 'Login', 'passport:', '%{public}s', this.passport);
    48. hilog.info(0x0000, 'Login', 'password:', '%{public}s', this.password);
    49. // 触发login事件
    50. this.context.eventHub.emit('login')
    51. }
    52. }

    预览效果如下:

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

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

  • 相关阅读:
    matlab 使用激光雷达检测、分类和跟踪车辆
    OkHttp搞定Http请求
    Spring Boot与Web开发-快速开发CRUD
    改进YOLOv5系列:首发结合最新CSPNeXt主干结构(适用YOLOv7),高性能,低延时的单阶段目标检测器主干,通过COCO数据集验证高效涨点
    Process assessment techniques-1
    python 引用、浅拷贝、深拷贝
    SparkSQL on K8s 在网易传媒的落地实践
    我在CSDN问答社区的回答
    2022,中国TO B企业出海实录
    [附源码]SSM计算机毕业设计 图书管理系统 JAVA
  • 原文地址:https://blog.csdn.net/qq_21154101/article/details/136526698