首页 > 其他分享 >HarmonyOS NEXT开发实战:发布图片评论案例

HarmonyOS NEXT开发实战:发布图片评论案例

时间:2024-07-08 15:27:34浏览次数:11  
标签:实战 ets 鸿蒙 NEXT --- HarmonyOS 开发

介绍

本示例将通过发布图片评论场景,介绍如何使用startAbilityForResult接口拉起相机拍照,并获取相机返回的数据。

效果图预览

图片评论

使用说明

  1. 通过startAbilityForResult接口拉起相机,拍照后获取图片地址。

实现思路

  1. 创建CommentData类,实现IDataSource接口的对象,用于评论列表使用LazyForEach加载数据。
export class CommentData extends BasicDataSource {
  // 懒加载数据
  private comments: Array<Comment> = [];

  // TODO:知识点:获取懒加载数据源的数据长度
  totalCount(): number {
    return this.comments.length;
  }

  // 获取指定数据项
  getData(index: number): Comment {
    return this.comments[index];
  }

  // TODO:知识点:存储数据到懒加载数据源中
  pushData(data: Comment): void {
    this.comments.push(data);
    AppStorage.setOrCreate('commentCount', this.totalCount());
    // 在数组头部添加数据
    this.notifyDataAdd(this.comments.length - 1);
  }
}
  1. 点击下方输入提示框,拉起评论输入弹窗。
Text($r('app.string.text_input_hint'))
  ...
  .onClick(() => {
    if (this.dialogController != null) {
      // 打开评论输入弹窗
      this.dialogController.open();
    }
  })

3.在输入弹窗中,输入文字,点击相机按钮,拉起相机,拍照后获得返回的图片地址。

Image($r('app.media.camera'))
  ...
  .onClick(async () => {
    ...
    let image: string = await cameraCapture(getContext(this) as common.UIAbilityContext);
    ...
  })
...
export async function cameraCapture(context: common.UIAbilityContext): Promise<string> {
  let result: common.AbilityResult = await context.startAbilityForResult({
    action: Constants.ACTION_PICKER_CAMERA,
    parameters: {
      'supportMultiMode': false,
      'callBundleName': context.abilityInfo.bundleName
    }
  });
  if (result.resultCode === 0) {
    let param: Record<string, Object> | undefined = result.want?.parameters;
    if (param !== undefined) {
      let resourceUri: string = param[Constants.KEY_RESULT_PICKER_CAMERA] as string;
      return resourceUri;
    }
  }
  return "";
}

4.点击发布按钮,将评论添加到列表中。

Button($r('app.string.publish'))
  ...
  .onClick(() => {
    if (this.controller) {
      this.textInComment = this.text;
      this.imagesInComment = this.selectedImages;
      this.publish();
      this.controller.close();
      this.textInComment = "";
      this.imagesInComment = [];
    }
  })
...
publishComment(): void {
  let comment: Comment = new Comment("Kevin", this.textInComment, $r('app.media.icon_comment_icon_main'), this.imageInComment, this.getCurrentDate());
  this.commentList.pushData(comment);
}

工程结构&模块类型

imagecomment                                    // har类型
|---components
|   |---constants
|       |---Constants.ets                       // 常量类
|   |---model
|       |---CommentModel.ets                    // 评论数据类
|       |---MockCommentData.ets                 // 生成模拟数据
|   |---utils
|       |---CameraUtils.ets                     // 拉起相机工具类
|   |---view
|       |---CommentInputDialog.ets              // 输入评论弹窗
|       |---CommentItemView.ets                 // 单个评论组件
|       |---ImageCommentView.ets                // 评论列表页
|       |---ImageListView.ets                   // 评论图片List组件

模块依赖

@ohos/routermodule(动态路由)

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了:ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS NEXT学习资料

鸿蒙(HarmonyOS NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS NEXT学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

鸿蒙南向开发入门

图片

《鸿蒙南向开发进阶笔记》

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS NEXT学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。

标签:实战,ets,鸿蒙,NEXT,---,HarmonyOS,开发
From: https://blog.csdn.net/m0_72493819/article/details/140268684

相关文章

  • Nginx性能调优5招35式不可不知的策略实战
    Nginx是一个高性能的HTTP和反向代理服务器,它在全球范围内被广泛使用,因其高性能、稳定性、丰富的功能以及低资源消耗而受到青睐。今天V哥从5个方面来介绍Nginx性能调优的具体策略,希望对兄弟们有帮助,废话不多说,马上开整。1.系统层面:调整内核参数:例如,增加系统文件描述符的限制......
  • 人脸识别与美颜算法实战:基于Python、机器学习与深度学习
    代码和pdf书等:GitHub-guozhe1992/read引言与基础知识:介绍人脸识别与美颜算法的基本概念、应用场景以及Python编程和机器学习的基础知识。视频图像处理技术:详细讲解基于Anaconda和PyCharm的环境搭建,以及视频图像处理的基础技术,如图像读取、显示、保存和格式转换等。抖音特效......
  • 2、需求工具 - 编程实战工具系列文章
          需求分析工具       笔者对于需求分析工具的应用,主要是思维导图软件和Word。思维导图用来理清需要的需求功能,而Word用来记录每个需求功能的实际内容。      对于思维导图软件,笔者用过几个,但是有些需要注册码,有些需要费用,这些都是需要钱才能进行使......
  • Linux系统权限控制详解(理论+实战)
    一、权限概述Linux权限控制是指对文件和目录的访问权限进行限制,以保护系统安全和数据完整性。其作用包括以下几个方面:保护系统安全:Linux系统中许多重要的配置文件和程序文件只有管理员才有权限访问,一般用户不能修改或删除这些文件,以防止系统被破坏。保护用户数据:每个用户的家......
  • 【LLM大模型】中国人工智能大模型技术白皮书,从0入门大模型,附文档+LLM实战教程
    近期,中国人工智能学会发布了《中国人工智能大模型技术白皮书》,系统梳理了大模型技术演进,深入探讨关键技术要素,并剖析当前挑战及未来展望。我为大家做了简要总结,并附上文档分享给大家。PDF:完整版本链接获取......
  • React+TS前台项目实战(二十六)-- 高性能可配置Echarts图表组件封装
    文章目录前言CommonChart组件1.功能分析2.代码+详细注释3.使用到的全局hook代码4.使用方式5.效果展示总结前言Echarts图表在项目中经常用到,然而,重复编写初始化,更新,以及清除实例等动作对于开发人员来说是一种浪费时间和精力。因此,在这篇文章中,将封装一个“高......
  • 多线程网络实战之仿qq群聊的服务器和客户端
    目录一、前言二、设计需求1.服务器需求 2.客户端需求三、服务端设计1.项目准备 2.初始化网络库3.SOCKET创建服务器套接字4. bind绑定套接字 5.listen监听套接字 6.accept接受客户端连接7.建立套接字数组8.建立多线程与客户端通信9.处理线程函数,收消息......
  • Android Studio实战演练-仿网易音乐播放器扩展
    效果图:首先按书里面一样敲出一首歌的播放也可以参考可以参考博主“林林要一直努力”写的,一首歌如下所示:林林要一直努力他写的教程链接AndroidStudio初学者实例:仿网易音乐播放器-CSDN博客https://blog.csdn.net/m0_59558544/article/details/131151435然后更改代码首先,多......
  • 异步优化与数据入库:顶点小说爬虫进阶实战
    顶点小说进阶建议这篇顶点小说进阶包括(数据入库、异步爬虫)看之前可以先看我之前发布的文章(从零开始学习Python爬虫:顶点小说全网爬取实战)入库#入库defsave_to_mysql(db_name,table_name,table_column_str,table_info_str):db=pymysql.connect(user='host',passw......
  • HarmonyOS NEXT 学习笔记2 --百度小练习
    1.百度的小案例:@Entry@ComponentstructPage0707_baidu{@Statemessage:string='HelloWorld';build(){Column({space:20}){Image('https://www.baidu.com/img/flexible/logo/pc/result.png').width('50%'......