纯血鸿蒙APP实战开发——评论组件案例实现

介绍

评论组件在目前市面上的短视频app中是一种很常见的场景,本案例使用全局状态保留能力弹窗来实现评论组件。点击评论按钮弹出评论组件,点击空白处隐藏该组件,再次点击评论按钮则会恢复上一次浏览的组件状态。

效果图预览

使用说明

  1. 点击评论按钮打开评论组件。
  2. 上下滑动可以浏览评论。
  3. 点击空白处或者关闭按钮可以关闭评论组件。
  4. 再次点击评论按钮则恢复上一次浏览评论位置。

实现思路

  1. 使用GlobalStateDialogManager来操作全局状态保留能力弹窗的布局内容以及显隐。源码参考Side.ets。
    首先导入GlobalStateDialogManager,如下:
import { GlobalStateDialogManager } from '@ohos/base';
  1. 初始化及评论内容更改时,使用operateGlobalStateDialog函数配置弹窗内容布局,如下:
  @Link @Watch('changeCommentData') commentData: CommentDataSource; // 当评论内容更改时刷新全局弹窗changeCommentData() {GlobalStateDialogManager.operateGlobalStateDialog({wrapBuilder: wrapBuilder(commentBuilder),params: this.commentData});}aboutToAppear(): void {this.changeCommentData();}@Builderfunction commentBuilder(commentData: CommentDataSource): void {CommentComponent({ commentData: commentData })}
  1. 按钮点击时通过operateGlobalStateDialog函数配置弹窗显示,如下:
  build() {、、、Column() {Image($r("app.media.short_video_new_icon")).height($r("app.integer.short_video_fabulous_height")).width($r("app.integer.short_video_fabulous_width")).objectFit(ImageFit.ScaleDown).margin({ bottom: $r("app.integer.short_video_fabulous_margin_bottom") })Text(this.commentCount).fontSize($r("app.integer.short_video_fabulous_font_size")).fontColor(Color.White).opacity($r("app.float.short_video_fabulous_opacity"))}.width('60%').height($r("app.integer.short_video_all_fabulous_height")).onClick(() => {// 开启全局弹窗GlobalStateDialogManager.operateGlobalStateDialog({ isShowGlobalStateDialog: true });})、、、}

高性能知识点

本示例使用了LazyForEach进行数据懒加载,LazyForEach懒加载可以通过设置cachedCount属性来指定缓存数量,同时搭配组件复用能力以达到性能最优效果。

工程结构&模块类型

shortvideo                             // har类型
|---model
|   |---BasicDataSource.ets            // 模型层-懒加载数据源
|   |---DataModel.ets                  // 数据模型层-视频数据
|---view
|   |---ShortVideo.ets                 // 视图层-主页
|   |---Side.ets                       // 视图层-视频右侧页面操作栏与左侧信息栏
|   |---VideoSwiper.ets                // 视图层-短视频切换
|   |---CommentView.ets                // 视图层-评论组件

模块依赖

  1. 路由模块:供entry模块实现路由导航
  2. 公共模块:全局状态保留能力弹窗

参考资料

全局状态保留能力弹窗

鸿蒙全栈开发全新学习指南

也为了积极培养鸿蒙生态人才,让大家都能学习到鸿蒙开发最新的技术,针对一些在职人员、0基础小白、应届生/计算机专业、鸿蒙爱好者等人群,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线【包含了大APP实战项目开发】

本路线共分为四个阶段:

第一阶段:鸿蒙初中级开发必备技能

第二阶段:鸿蒙南北双向高工技能基础:gitee.com/MNxiaona/733GH

第三阶段:应用开发中高级就业技术

第四阶段:全网首发-工业级南向设备开发就业技术:https://gitee.com/MNxiaona/733GH

《鸿蒙 (Harmony OS)开发学习手册》(共计892页)

如何快速入门?

1.基本概念
2.构建第一个ArkTS应用
3.……

开发基础知识:gitee.com/MNxiaona/733GH

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……

基于ArkTS 开发

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

鸿蒙开发面试真题(含参考答案):gitee.com/MNxiaona/733GH

鸿蒙入门教学视频:

美团APP实战开发教学:gitee.com/MNxiaona/733GH

写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:gitee.com/MNxiaona/733GH

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/829926.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CUDA的基础知识

文章目录 数据精度CUDA概念线程&线程块&线程网络&计算核心GPU规格参数内存 GPU并行方式数据并行流水并行张量并行混合专家系统 数据精度 FP32 是单精度浮点数,用8bit 表示指数,23bit 表示小数;FP16 是半精度浮点数,用…

「Good Subarrays」Solution

简述题意 我们定义一个数组 b b b 是好的当且仅当所有的 b i ≥ i b_i \ge i bi​≥i。 现在给你 q q q 次操作,每次操作有两个数 p p p 和 x x x,求出把 a p a_p ap​ 赋值成 x x x 后 a a a 数组好的子序列的个数,每次操作独立。 …

[97编程世界冠军4K组]代码被转为ts脚本github代码如何在WIN10运行和调试

源代码地址:iGitHub - SuperSodaSea/Omniscent: Analysis and Replication of Omniscent, the 1st in the Mekka & Symposium 1997 PC 4K Intro Competition. 1、软件安装nodejs和webstorm都要安装: node-v20.12.2-x64.msi WebStorm-2024.1.1.exe 代…

L1-041 寻找250

作者 陈越 单位 浙江大学 对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。 输入格式: 输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。 输出格式&a…

【进程通信】利用管道创建进程池(结合代码)

文章目录 什么叫进程池进程池的优点 创建进程池代码实现: 什么叫进程池 我们知道,一个进程创建子进程通常是为了让这个子进程去为它完成某个任务。例如我们使用的指令,其实就是bash进程创建子进程让子进程去执行的。但是我们需要考虑这样一个…

【介绍下分布式系统】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

macos如何安装Tesseract软件

问题在线过程: 今天在mac系统上安装tesseract持续失败,整了很久终于把这个问题解决了,所以希望通过这篇文章分享给大家: 首先,我在用 brew install tesseract 或 brew install --build-from-source tesseract 一直报错,报错内容如下: Warning: You are using macO…

wegame启动游戏错误代码126,加载x3daudio1_7.dll失败的修复教程

在尝试通过WeGame平台启动某款游戏时,遇到了阻碍,系统反馈了一个特定的错误代码“错误代码126,加载x3daudio1_7.dll失败”。这个错误提示表示游戏无法加载x3daudio17.dll文件,导致游戏无法正常启动。经过一番研究和尝试&#xff0…

vue elementui el-table表格 点击单元格添加选中样式

注意: 1、点击某行单元格添加选中样式; 2、表格第一列数据单独添加样式,比如:加粗; 3、表格表头添加样式,比如:修改背景色; 先上代码(效果图在文章末尾)&…

python-pytorch 如何使用python库Netron查看模型结构(以pytorch官网模型为例)0.9.2

Netron查看模型结构 参照模型安装Netron写netron代码运行查看结果需要关注的地方 2024年4月27日14:32:30----0.9.2 参照模型 以pytorch官网的tutorial为观察对象,链接是https://pytorch.org/tutorials/intermediate/char_rnn_classification_tutorial.html 模型代…

Ansible自动化

Ansible自动化 自动化的需求: 1. 在什么样的场景下需要自动化? 批量化的工作: 装软件包、配置服务、升级、下发文件… 2. 为什么在自动化工具中选择ansible? 对比shell脚本: 相对于用shell的脚本来实现自动化&#x…

42.接雨水

接雨水是一个非常经典的题目了,我在二刷的时候,终于能独立做了,在记录一下灵神的横着计算的单调栈思想. 法一: 竖着计算 奇思妙想 让我们想想,接到的雨水到底是存储哪里了呢,其实他就是凹陷部分,而什么是凹陷呢,就是从左边看,从右边看都发现不了的地方. …

滑块验证码破解----Java使用opencv后端破解滑块验证

使用技术:Java SpringBootopenCV 在windows上首先需要下载opencv进行安装,先去官网:Releases - OpenCV 下载这个windows版本的安装包 下载后直接安装解压就行,然后需要,然后找到安装位置里的这个文件: 你下载的是什么版本的,这里的数字就是多少,比如我下载4.5.3版本那么这…

kubectl无法使用清理磁盘

执行Kubectl get pods 报错如下&#xff1a; # kubectl get nodes The connection to the server <master>:6443 was refused - did you specify the right host or port?查看占用磁盘&#xff1a; df -h 查看占用100%的数据 df -h | grep 100% 检查环境变量&#xff…

(学习日记)2024.04.26:UCOSIII第五十节:User文件夹函数概览(uC-CPU文件夹)

之前的章节都是针对某个或某些知识点进行的专项讲解,重点在功能和代码解释。 回到最初开始学μC/OS-III系统时,当时就定下了一个目标,不仅要读懂,还要读透,改造成更适合中国宝宝体质的使用方式。在学完野火的教程后,经过几经思考,最后决定自己锦上添花,再续上几章。 这…

【数据库】关于数据库你必须知道的事情

常用命令 mysql -u username -p USE mydatabase; SHOW DATABASES; CREATE DATABASE newdatabase;数据库的规约 包括&#xff1a; 建表规约&#xff1b;索引规约&#xff1b;SQL与ORM映射规约&#xff1b; Explain技巧 explain的结果代表的含义需要比较清楚。参数中&#x…

永磁同步电机SMO负载转矩观测matlab模型。

永磁同步电机SMO负载转矩观测matlab模型。 负载转矩的有效识别是提高伺服驱动系统抗负载扰动性能的关键之一。现在的传统结构的LTID滑模观测器存在频率抖动大&#xff0c;估计精度差的缺点&#xff0c;限制了其在高性能伺服系统中的应用。 本模型推导分析了传统LTID滑模观测器…

【k8s】:Pod的生命周期详解

【k8s】:Pod的生命周期详解 1、Pod的生命周期1.1、Pod的创建1.2、Pod的调度1.3、Pod的初始化1.4、Pod的运行及钩子函数1.4.1 k8s中的3种钩子函数1.4.2 k8s中的3种探测类型1.5、Pod的终止1.6、Pod的重启2、Pod的生命周期的五种状态(相位)💖The Begin💖点点关注,收藏不迷…

eclipse 如何创建python文件

一、准备 1.平台要求&#xff1a; 电脑除了要安装eclipse软件和Python语言包之外&#xff0c;还需要将Python集成到eclipse软件中&#xff0c;网上有很多的方法&#xff0c;这里就不细细介绍如何集成了。 在下面界面中可以看到自己已经安装了继承插件。具体方法见步骤2&…

YOLOV5 TensorRT部署 BatchedNMS(转换engine模型)(上)

文章目录 1.修改yolo detct层2.导出onnx模型并引入plugin3.转换为engine文件YoloV5使用tensorRT部署时,模型推理是放在cuda上操作,得到的结果需要在cpu上执行nms操作,但是当图像中的目标较多,或者检测出来的框较多时,nms耗时较长。 TensorRT 官方提供了batchedNMSPlugin的…