在本篇博客中,介绍一个仿微信的 HarmonyOS 应用,应用包括微信的首页、通讯录、发现、我的页面,以及聊天界面。
一、先上效果图:
二、代码解读
以聊天界面为例,代码如下(解读在代码下面):
import {Title} from '../model/CommonStyle'
import router from '@ohos.router'
@Entry
@Component
// 定义聊天详情页面的结构
export struct ChatDetailPage {
// 用户头像
private userAvatar: string = router.getParams()['userAvatar'] as string
// 用户名
private userName: string = router.getParams()['userName'] as string
// 聊天详情
private chatDetail: string = router.getParams()['chatDetail'] as string
// 构建方法
build() {
Column() {
// 标题
Title({ text: this.userName })
// 左侧消息气泡
LeftMsgBubble({ imageSrc: this.userAvatar, text: "今天天气真好,想不想一起去户外活动?" })
// 右侧消息气泡
RightMsgBubble({ imageSrc: "user20.webp", text: "当然想啊,你打算去哪里?" })
// 左侧消息气泡
LeftMsgBubble({ imageSrc: this.userAvatar, text: "我想去公园,逛逛花花草草,你觉得怎么样?" })
// 右侧消息气泡
RightMsgBubble({ imageSrc: "user20.webp", text: "好主意!我也喜欢大自然的感觉。" })
// 右侧消息气泡
RightMsgBubble({ imageSrc: "user20.webp", text: "我们可以带上飞盘或者羽毛球,一起玩玩怎么样?" })
// 左侧消息气泡
LeftMsgBubble({ imageSrc: this.userAvatar, text: "太棒了,我会准备一些小吃,我们一起享受阳光吧!" })
}.height("100%")
}
}
// 左侧消息气泡组件
@Component
struct LeftMsgBubble {
private imageSrc: string
private text: string
// 构建方法
build() {
Row() {
// 用户头像
Image($rawfile(this.imageSrc)).width('120px').height('120px').margin({ left: '10px', right: '10px' })
// 文本消息
Text(this.text)
.fontSize('14fp')
.backgroundColor("#cccccc")
.padding(10)
.borderRadius(10)
.margin({ right: '280px' })
}
.width('100%')
.margin({ top: '20px', bottom: '20px' })
.alignItems(VerticalAlign.Top)
}
}
// 右侧消息气泡组件
@Component
struct RightMsgBubble {
private imageSrc: string
private text: string
// 构建方法
build() {
Flex({ direction: FlexDirection.RowReverse }) {
// 用户头像
Image($rawfile(this.imageSrc))
.width('120px')
.height('120px')
.margin({ left: '10px', right: '10px' })
.objectFit(ImageFit.Contain)
Flex({ direction: FlexDirection.RowReverse, justifyContent: FlexAlign.Start }) {
// 文本消息
Text(this.text)
.fontSize('14fp')
.backgroundColor("#1dde40")
.padding(10)
.borderRadius(10)
.margin({ left: '140px' })
}
}.margin({ top: '20px', bottom: '20px' })
}
}
??????
这段代是使用ArkTS语言?来构建聊天详情页面的 UI 组件。以下是对代码的简要解释:
三、项目地址
完整项目代码: