鸿蒙NEXT开发笔记(一)仿微信聊天App的登录页面

一、楔子

随着纯血鸿蒙公测的时间越来越近,越来越多的小伙伴准备上手鸿蒙App开发,可是基于鸿蒙实现的实战App项目比较缺乏,很多人看了半天的官方API,却迟迟难以自己动手实现一个完整的鸿蒙App项目。一部分朋友对着公开的视频教程尝试自学,只不过往往学到关键部分却发现断更了,其中的原因各种各样,毕竟饿肚子学雷锋也是有难度的呀。
那么有没有一个从简单到高级的鸿蒙App实战项目,能够循序渐进适合零基础的小白呢?以往在Android体系学习App开发的时候,都有像《Android Studio开发实战 从零基础到App上线》这样既通俗易懂,又提供众多实战项目的入门教程,那么《Android Studio开发实战 从零基础到App上线》书中的实战项目能否在鸿蒙App中实现呢?
其实DevEco Studio的许多操作都跟Android Studio大同小异,把Android App实战项目改造为鸿蒙App完全可行,下面就以“仿微信聊天”的实战App项目为例,基于HarmonyOS NEXT也就是鸿蒙5.0版本,详细介绍如何从零开始一步一步搭建“仿微信聊天”的鸿蒙App。具体实现的内容会分章节发布,提供给各位朋友学习,如果各位有疑问或建议也欢迎留言指正。

注意:这里默认你已经对HarmonyOS NEXT的基础API操作有所了解,已经初步知晓ArkUI的处理机制与ArkTS的编程逻辑。如果您是鸿蒙零基础,建议先观看鸿蒙官方的入门讲解视频,初步学习一下鸿蒙App的基本组件知识。

二、项目介绍

“仿微信聊天”的App项目在Android系统中有成熟的实战案例,具体参见《Android Studio开发实战:从零基础到App上线(第3版)》第13章的“13.5 实战项目:仿微信的私聊和群聊”,该项目的前后端通讯方式采用SocketIO实现,同时支持一对一的私聊和多对多的群聊,聊天内容也同时支持文本消息和图片消息,并且在多部Android真机上测试通过,具备很高的学习研究价值。
那么把“仿微信聊天”App改造成鸿蒙App的话,不但用到ArkUI的各种界面组件,还能熟悉ArkUI的的各种交互方式,而且要跟后端服务器传输Socket消息,这些编程技巧非常锻炼学习者的鸿蒙App编码能力。毕竟资讯类App往往只有简单的浏览动作,不如聊天类App那样有着丰富的交互操作,所以“仿微信聊天”的鸿蒙App项目非常值得大家学习和研究。

三、代码实现

“仿微信聊天”的鸿蒙App首先要有个登录界面,展示微信的图标、文字,还要输入用户的昵称,并提供登录按钮,登录成功后跳转到微信主界面。想要实现基本的微信登录功能,用到了下列基本组件:
1、Image组件,用来展示微信图标;
2、Text组件,用来展示提示文字;
3、TextInput组件,用来输入用户的微信昵称;
4、Button组件,用来响应登录动作;
接下来讲解仿微信登录界面的具体实现步骤。

1、登录界面的整体布局

由于登录界面的各组件从上往下依次排列,因此适合采用Column容器作为根布局,登录页面的框架代码如下:

build() {
  Column() {
    // 这里暂时省略其他组件的代码
  }
  .height('100%')
  .width('100%')
  .padding(5)
}

2、登录界面的静态组件

登录界面的微信图标和提示文字属于静态内容,仅做展示用,无需跟用户交互,因而使用Image组件和Text组件即可满足静态图文的展示要求,展示代码如下:

Image($r('app.media.wechat'))
  .width(150).height(150).objectFit(ImageFit.Contain)
Text('请输入您的昵称')
  .fontSize(18).margin(15)

3、昵称输入的双向绑定

鸿蒙App采用声明式UI,组件的输入信息要跟具体变量绑定,一旦该变量的值发生变化,声明式UI就会自动刷新被绑定的组件信息。那么对于输入的微信昵称,首先声明一个被“@State”修饰的昵称字符串变量,如下:

  @State nickName: string = '' // 昵称

这里的“@State”表示该变量属于可被组件绑定的状态变量,只要变量值发生变更,组件就会立即刷新与该变量有关的界面属性。
不过“@State”修饰只实现了单向绑定,也就是变量值变化会触发组件刷新。然而对于编辑框来说,还可能由用户输入触发,也就是组件状态的变更先发生,此时要使用双向绑定机制,在组件状态变更时自动刷新变量值。双向绑定的写法为“$$变量名”,表示当组件状态发生变化时,自动把组件的最新状态赋值给双向绑定的变量。就TextInput组件而言,双向绑定的代码如下:

TextInput({text: $$this.nickName, placeholder: '请输入昵称'})
  .width('100%').height(40)
  .type(InputType.Normal).fontSize(18).maxLength(12)

4、登录成功的跳转操作

微信登录成功之后,要跳转到微信主界面,跳转过程还要携带昵称参数。方便起见可使用router实现跳转功能,也就是通过下面的导包语句引入router组件:

import { router } from '@kit.ArkUI';

调用router组件的pushUrl方法,可以跳转到指定的页面路径,其中输入参数中的url表示待跳转的页面路径,比如“chat/WeChatPage”;输入参数中的params表示携带的内容信息,详细内容采取Key-Value的键值对方式设置,也就是哪个键名对应哪个键值。详细的登录跳转代码如下:

Button('登 录')
  .width('100%').fontSize(18).margin({ top: 10 })
  .onClick(() => {
    if (this.nickName.length == 0) {
      promptAction.showToast({message: '请输入您的微信昵称'})
      return
    }
    router.pushUrl({
      url: 'chat/WeChatPage',
      params: {
        nickName: this.nickName,
      }
    })
  })

把上述的几个组件依次放置到Column容器内部,实现的仿微信登录界面效果如下:

下一篇文章会介绍如何实现好友列表的展示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值