『江鸟中原』鸿蒙---仿微信app
  uL743dpFsg9N 2023年12月11日 31 0

大家好,江鸟中原鸿蒙展翅,今天小试牛刀给大家讲解一下HarmonyOS WeChat的开发过程。

HarmonyOS WeChat是基于鸿蒙3.0的ArkUI开发的仿微信界面,使用的是eTS开发范式,基于鸿蒙SDK3.0(API Version 7)。

该项目只有前端UI,无后端逻辑。

数据说明:

UI界面的显示数据通过数据模型进行定义更新,所有模型均位于ets/default/model下

data包中为数据结构定义

Model文件为模型接口

部分代码:

import { navigationBar } from '../common/components/navigationBar'
import { BottomTabs } from '../common/components/bottomTabs'
import { SessionTabContent } from '../common/components/tabcontent/SessionTabContent'
import { ContactTabContent } from '../common/components/tabcontent/ContactTabContent'
import { MeTabContent } from '../common/components/tabcontent/MeTabContent'
import { DiscoveryTabContent } from '../common/components/tabcontent/DiscoveryTabContent'

@Entry
@Component
struct Main {
  private controller: TabsController = new TabsController()
  @State bottomTabIndex: number = 0
  @State title: Resource[] = [$r('app.string.title_wechat') ,$r('app.string.title_contact'),$r('app.string.title_discovery')]

  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.End, justifyContent: FlexAlign.End }) {

      if(this.bottomTabIndex < 3){
        navigationBar({title: this.title[this.bottomTabIndex] , isBack:false , isClose:false , isMenu: true , isSearch: true , isMore:false})
      }

      Tabs({ barPosition: BarPosition.End, index: 0, controller: this.controller }) {
        TabContent() {
          SessionTabContent()
        }
        TabContent() {
          ContactTabContent()
        }
        TabContent() {
          DiscoveryTabContent()
        }
        TabContent() {
          MeTabContent()
        }
      }.onChange((index: number) => {
        this.bottomTabIndex = index
      })
      .vertical(false)
      .barHeight(0)
      .width('100%')
      .scrollable(true)

      BottomTabs({ controller: this.controller, bottomTabIndex: $bottomTabIndex })
    }
    .backgroundColor($r('app.color.white'))
    .width('100%').height('100%')
  }
}

朋友圈代码:

@Entry
@Component
struct Moments {
  private name: string = '刘备'
  private momentItems: MomentData[] = getMomentDatas()

  build(){
    Column(){

      Stack({ alignContent: Alignment.Top }){

        Image($rawfile('discovery_bg.jpg'))
          .objectFit(ImageFit.Cover)
          .height(250)
          .width('100%')

        Flex({direction: FlexDirection.Row , justifyContent: FlexAlign.SpaceBetween , alignItems: ItemAlign.Center}){
          Image($r('app.media.ic_back_white'))
            .height(30)
            .width(30)
            .margin({ left: 15})
            .onClick(() => {
              router.back()
            })
          Image($r('app.media.ic_camera'))
            .height(30)
            .width(30)
            .margin({ right: 15})
        }.width('100%').height(60).zIndex(1)  

        Flex({direction: FlexDirection.Row , justifyContent: FlexAlign.End , alignItems: ItemAlign.End}){
          Text(this.name)
            .margin({bottom: 35 , right: 10})
            .fontFamily($r('sys.float.id_text_size_body1'))
            .fontColor($r('app.color.white'))
            .fontSize(18)
            .maxLines(1)
          Image($rawfile('header1.png'))
            .width(75).height(75)
            .borderRadius(8)
            .margin({right: 15})
        }.width('100%').height(280)
      }.width('100%').height(280)

      List(){
        ForEach(this.momentItems , item=>{
          ListItem() {
            MomentListItem({ momentItem: item })
          }
        })
      }
      .width('100%')
      .layoutWeight(1)
    }
  }
}

聊天页面:

build() {
  Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceBetween }) {

    navigationBar({title: this.sessionData.name, isBack:true , isClose:false , isMenu: false , isSearch: false , isMore:true})


    List(){
      ForEach(this.msgsItems , item=>{
        ListItem() {
          MessageListItem({ msgItem: item })
        }
      },item => item.mid)
    }.padding({top:10 , bottom: 10})
    .width('100%')


    messageBottom()
  }
  .width('100%')
  .height('100%')
  .backgroundColor($r('app.color.grey0'))
}


运行截图:

『江鸟中原』鸿蒙---仿微信app_Image

『江鸟中原』鸿蒙---仿微信app_Image_02

『江鸟中原』鸿蒙---仿微信app_Image_03

『江鸟中原』鸿蒙---仿微信app_UI_04

『江鸟中原』鸿蒙---仿微信app_bc_05


『江鸟中原』鸿蒙---仿微信app_UI_06


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月11日 0

暂无评论

推荐阅读
uL743dpFsg9N
作者其他文章 更多