1

全面解析 HarmonyOS NEXT(5.0):从零构建高效登录页面

在本文中,我们将深入探讨如何使用HarmonyOS NEXT来构建一个功能完备的登录页面。通过这一实战案例,你将了解页面布局、数据本地化存储、网络请求等多方面知识,并见识到HarmonyOS NEXT在构建现代应用时的强大能力和灵活性。

HarmonyOS NEXT基本定义与特点

自主可控:HarmonyOS NEXT是华为自主研发的操作系统,实现了技术的自主可控,为用户和开发者提供了更多的自由度和选择空间。
在这里插入图片描述

安装包小:通过深度优化系统架构,HarmonyOS NEXT实现了安装包体积的显著缩小,使得用户能够更快速地下载和安装系统。
运行速度快:系统经过优化后,运行速度得到大幅提升,为用户提供了更加流畅的操作体验。
系统简洁精致:HarmonyOS NEXT的界面设计简洁大方,动效符合直觉,使得用户能够轻松上手并享受愉悦的使用体验。
强大互联能力:该系统具备强大的互联能力,能够实现设备间的无缝连接和协同工作,为用户打造更加便捷的智能生活。
在这里插入图片描述

自HarmonyOS NEXT发布以来,原生鸿蒙的应用和元服务数量在短短几个月内飙升了10倍,已有超过15000个鸿蒙原生应用和元服务在华为应用市场上架。
华为为升级原生鸿蒙系统的用户提供了丰富的增值权益,以感谢他们的尝鲜支持与反馈。
华为还积极与各行业头部企业合作,推动企业内部应用原生鸿蒙适配,共同打造更加完善的鸿蒙生态体系。

HarmonyOS NEXT的发布受到了广泛的关注和好评,许多用户表示期待主流应用的原生鸿蒙版本能够持续迭代完善。
在这里插入图片描述

华为在发布会上还推出了多款新品,包括华为nova 13系列手机、华为WATCH Ultimate系列手表等,进一步丰富了鸿蒙生态体系的产品线。
未来,随着鸿蒙生态的不断发展和完善,HarmonyOS NEXT有望成为更多用户的首选操作系统,为用户带来更加安全、流畅、智能的操作体验。
综上所述,HarmonyOS NEXT是华为推出的一款全新的手机操作系统,具有自主可控、安装包小、运行速度快、系统简洁精致、强大互联能力等特点。该系统在性能提升、续航优化、应用生态与开发者支持等方面都取得了显著的成果,并受到了市场的广泛关注和好评。

一、环境准备

首先,确保你的开发环境已经准备好,并安装了以下工具:

DevEco Studio:华为的官方IDE,类似于Android Studio,支持开发HarmonyOS应用。
HarmonyOS SDK:安装对应版本的SDK。采用API13
打开DevEco Studio,创建一个新的项目。
在这里插入图片描述

二、UI布局设计

在HarmonyOS中,UI界面是通过XML文件进行描述的。我们将创建一个简单的登录页面,包括两个输入框(用户名、密码)和一个登录按钮。

@Entry
@Component
struct Index {
  @State private inputName: string = ''
  @State private inputPassword: string = ''

  build() {
    Column(){
      Image($r('app.media.good'))
        .width('50%')
        .interpolation(ImageInterpolation.High)
      // Image($r('app.media.name'))

        .width('100%')
        .margin({ top: 10})
        .interpolation(ImageInterpolation.High)
      //账号输入框,水平布局
      Row(){
        Text('账号:')
          .fontSize(16)
        TextInput({text: this.inputName , placeholder: '输入用户名'})
          // 设置placeholder提示语颜色
          .placeholderColor(Color.Grey)
            // 设置placeholder提示语大小,字体粗细
          .placeholderFont({ size: 14, weight: 400 })
            //设置宽度和高度
          .width('80%')
          .height(40)
            //设置组件的外边距,padding为设置组建的内边距
          .margin(20)
            //设置字体大小和颜色
          .fontSize(14)
          .fontColor(Color.Black)
            //光标颜色
          .caretColor('#1AB095')
            // 输入过滤器正则表达式
          .inputFilter('[a-z]', (e) => {
            console.log(JSON.stringify(e))
          })
          .onChange((value: string) => {
            this.inputName = value
          })
      }
      .width('90%')

      // 密码输入框
      Row() {
        Text('密码:')
          .fontSize(16)
        TextInput({ placeholder: '输入密码',text: this.inputPassword })
          .caretColor('#1AB095')
          .width('80%')
          .height(40)
          .margin(20)
          .type(InputType.Password)
          .maxLength(9)
          .showPasswordIcon(true)
            //将输入框内容赋值给inputPassword
          .onChange((value: string) => {
            this.inputPassword = value
          })
      }
      .width('90%')

      // 登录注册按钮
      Row(){
        Button('注册')
          .width(150)
          .height(50)
          .margin(20)
          .backgroundColor('#99FFA8')
            //跳转至注册页面
          .onClick( () => {
            // router.pushUrl({
            //   url:"pages/Register"
          })
        Blank()
        //登录按钮
        Button('登录')
          .width(150)
          .height(50)
          .margin(10)
          .backgroundColor('#1AB095')
          .onClick(() => {
            // this.loginCommit()
          })
      }.width('100%')
    }
    .height('100%')
    .justifyContent(FlexAlign.Center)
    .width('100%')
  }
}

实现效果如下:

在这里插入图片描述
这段代码定义了一个简单的用户界面,基于arkts,它是一个登录/注册页面的界面,使用了结构化的布局和控件。下面是对该代码的详细解析:

  1. @Entry@Component
  • @Entry@Component 是自定义装饰器,表明 Index 结构是一个组件(类似于React中的组件)。
  • Index 是该组件的类或结构体,代表登录页面的界面组件。
  • @State
  • @State 是装饰器,用来声明组件的状态。状态会自动更新界面。
  • inputNameinputPassword 分别存储用户输入的用户名和密码。

    1. build() 方法
  • build() 方法是组件的核心部分,用于构建UI界面。
  • Column()Row()
  • Column()Row() 是用于布局的容器。Column 会将其中的控件按垂直方向排列,而 Row 会按水平方向排列。
  • Image($r('app.media.good'))
  • 这是一个图片控件,$r('app.media.good') 用于引用图片资源(可能是本地资源),并设置图片的宽度为 50% 和高质量插值 (interpolation(ImageInterpolation.High)).
  • 图片控件设置了不同的宽度,分别为 50%100%
  • 账号和密码输入框
  • 账号输入框

    • 使用了 TextTextInput 控件。
    • TextInput 设置了初始值为 this.inputName,并且包含了 placeholder 提示、输入框的高度、宽度等属性。
    • inputFilter('[a-z]') 设置了一个正则表达式来过滤输入的字符,这里仅允许字母输入,并且提供了一个回调函数来捕获事件。
    • 通过 onChange 事件,用户输入的值会更新 inputName 状态。
  • 密码输入框

    • 设置了类似于账号输入框的属性,但还设置了 type: InputType.Password,表示该输入框的内容将被隐藏。
    • 限制输入最大字符为 9,并且允许显示密码图标。

      1. 登录与注册按钮
  • 注册按钮:按钮标签为 "注册",设置了宽度、背景色和点击事件。点击时,可以跳转到注册页面(但当前跳转部分被注释掉了)。
  • 登录按钮:按钮标签为 "登录",设置了宽度、背景色和点击事件,点击后会触发登录操作。
  • Blank()
  • 这是一个占位符组件,可能用来在按钮之间加入空白区域,确保布局良好。
  • 布局设置
  • 所有控件的布局方式采用了 justifyContent(FlexAlign.Center) 来使组件居中对齐。
  • 每个布局的宽度、间距和高度都进行了详细的设置,使得页面视觉效果更加整齐。
  • 代码结构
    整体来看,这段代码采用了声明式的布局方式,使用了基于组件的编程思想,每个元素和控件的属性和样式都被细致地配置,确保页面呈现良好。

这段代码构建了一个用户登录和注册界面的基础布局,使用了图像、文本、输入框和按钮控件。通过 @State 管理输入的状态,并使用了响应式的布局和样式,使得用户能够输入账号和密码并进行操作。

总结

本文全面解析了如何利用HarmonyOS NEXT技术构建一个功能齐全的登录页面,从开发环境的准备到UI布局设计,再到具体功能实现,涵盖了开发中的关键环节和核心技术点。通过本文,你不仅学习了HarmonyOS NEXT的基础知识和特点,如自主可控、安装包小、运行速度快、强大互联能力等,还深入理解了基于ArkTS语言的UI组件开发方式。

具体案例展示了如何通过声明式编程实现现代化的界面布局、输入框状态管理和用户交互功能。同时,本文强调了HarmonyOS NEXT在性能优化和开发便捷性上的优势,展现了其在构建智能设备应用时的强大能力和生态潜力。

未来,随着HarmonyOS生态的持续扩展和完善,开发者将能充分利用其技术特性和工具链打造更多高效、流畅的应用,为用户带来优质的使用体验。通过本文的学习,你可以更轻松地上手HarmonyOS开发,迈出构建原生鸿蒙应用的第一步。


阿波的朋友
3.6k 声望438 粉丝