作为鸿蒙开发新手,本次实战聚焦华为风格登录页开发,基于ArkTS完成基础UI布局与核心交互,过程中积累了实用的开发经验,整理分享给同样入门鸿蒙的小伙伴,助力快速上手移动端UI开发。

一、实战核心实现

本次开发核心目标是还原华为风格登录页,重点运用ArkTS的Flex布局与状态管理能力:

1. 布局实现:采用Column+Row嵌套布局,搭配Blank组件将底部其他登录方式固定在页面底部,统一胶囊圆角样式,贴合华为产品视觉规范,保证多屏幕适配性。

2. 交互实现:通过@State状态变量绑定协议复选框与登录按钮,实现“未勾选协议则按钮禁用”的核心逻辑,同时监听手机号输入框变化,完成数据同步。

3. 问题解决:针对布局错乱、交互无反馈等常见问题,通过调整组件权重、设置对齐方式、绑定状态变量,确保页面流畅性与美观度。

三、完整核心代码

以下是华为风格登录页完整ArkTS代码,可直接复制到DevEco Studio中使用(需提前导入对应媒体资源):

@Entry
@Component
struct LoginPage {
  build() {
    Column() {
      // 顶部区域
      Row() {
        Image($r('app.media.hw_cancel'))
          .width(20)
        Text('帮助')
      }
      .width('100%')
      .justifyContent(FlexAlign.SpaceBetween)
      // logo图标
      Image($r('app.media.hw_huawei'))
        .width(100)
        .margin({ top: 50, bottom: 60 })
      // 国家/地址区域
      Row() {
        Text('国家/地区')
          .layoutWeight(1)
          .fontColor('#666')
        Text('中国(+86)')
          .margin({ right: 5 })
          .fontColor('#666')
        Image($r('app.media.hw_right'))
          .width(20)
          .fillColor('#666')
      }
      .width('100%')
      .height(40)
      .backgroundColor('#fff')
      .borderRadius(20)
      .padding({ left: 15, right: 10 })
      // 手机号
      TextInput({ placeholder: '请输入手机号' })
        .placeholderColor('#666')
        .height(40)
        .borderRadius(20)
        .backgroundColor('#fff')
        .margin({ top: 20 })
      // 注册协议
      Row() {
        Checkbox()
          .width(14)
          .margin({ top: 7 })
        Text() {
          Span('我已经阅读并同意')
          Span('《华为隐私政策》').fontColor('#3274f6')
          Span('《华为用户服务协议》').fontColor('#3274f6')
          Span(',未注册的手机号将自动创建华为账号')
        }
        .fontSize(15)
        .fontColor('#666')
        .lineHeight(22)
      }
      .alignItems(VerticalAlign.Top)
      .margin({ top: 20, right: 16 })
      // 登录按钮
      Button('登录')
        .width('100%')
        .backgroundColor('#bf2838')
        .margin({ top: 25 })
      // 登录按钮下方的文字
      Row({ space: 25 }) {
        Text('新用户注册').fontSize(14).fontColor('#666')
        Text('账户密码登录').fontSize(14).fontColor('#666')
        Text('无法登录').fontSize(14).fontColor('#666')
      }
      .margin({ top: 15 })
      // 填充空白区域
      Blank()
      // 其他登录方式
      Column() {
        Text('其他登录方式')
          .fontColor('#666')
          .height(22)
          .fontSize(14)
          .margin({ bottom: 20 })
        Row() {
          Image($r('app.media.hw_wechat')).width(34).fillColor('#56a44a')
          Image($r('app.media.hw_weibo')).width(34).fillColor('#c8493b')
          Image($r('app.media.hw_qq')).width(34).fillColor('#4ba0e8')
        }
        .width('60%')
        .margin({ bottom: 20 })
        .justifyContent(FlexAlign.SpaceAround)
      }
      .width('100%')
    }
    .padding(20)
    .width('100%')
    .height('100%')
    .backgroundImage($r('app.media.hw_login_bg'))
    .backgroundImageSize(ImageSize.Cover)
  }
}

注:代码中引用的媒体资源(图标、背景图),需在项目media目录下导入,替换对应资源名称即可正常运行。

ArkTS 开发入门

运行截图:

二、实战心得与收获

1. 技术层面:快速掌握ArkTS @State状态管理、Flex布局的核心用法,理解“数据驱动UI”的开发思想,熟悉移动端登录页的基础设计规范。

2. 实战感悟:鸿蒙移动端开发需注重细节,组件的间距、样式、交互反馈都直接影响用户体验,同时培养了自身问题排查与代码优化的能力。

3. 后续规划:后续将完善登录校验、协议跳转等功能,进一步深耕ArkTS组件封装与接口联调,持续积累鸿蒙开发实战经验。

新手入门鸿蒙,建议从基础UI实战入手,多尝试、多排查,逐步掌握核心语法与开发逻辑,一起加油成长~

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐