HarmonyOS NEXT应用开发之听歌识曲水波纹特效案例

介绍

在很多应用中,会出现点击按钮出现水波纹的特效。

效果图预览

使用说明

  1. 进入页面,点击按钮,触发水波纹动画。
  2. 再次点击按钮,停止水波纹动画。

实现思路

本例涉及的关键特性和实现方案如下:

  1. 要实现存在两个连续的涟漪,需要两个层叠的Stack分别以一定延迟进行相同的动画。源码参考WaterRipples.ets。
Stack()
.ripplesStyle()
.opacity(this.immediatelyOpacity)
.scale(this.immediatelyScale)
Stack()
.ripplesStyle()
.opacity(this.delayOpacity)
.scale(this.delayScale)
  1. 通过点击按钮来判断isListening变量,如果为true则添加动画。涟漪动画实际上的效果为透明度0.8->0,半径扩大到6倍的动画,持续时间无限。源码参考WaterRipples.ets。
/** TODO: 知识点:新建两个动画,分别修改两个Stack的属性,设置延迟200ms,展示为两个连续的涟漪,iterations设置为-1表示无限重复
* 高性能知识点:建议使用系统提供的动画接口,如果使用自定义动画,在动画曲线计算过程很容易引起UI线程高负载。
* 参考《减少动画丢帧》文章
* https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/performance/reduce-animation-frame-loss.md/
**/
animateTo({ duration: this.ANIMATION_DURATION, iterations: -1, curve: Curve.EaseInOut }, () => {
  this.immediatelyOpacity = 0;
  this.immediatelyScale = { x: 6, y: 6 };
})
animateTo({ duration: this.ANIMATION_DURATION, iterations: -1, curve: Curve.EaseInOut, delay: 200 }, () => {
  this.delayOpacity = 0;
  this.delayScale = { x: 6, y: 6 };
})
  1. 如果isListening为false,则用持续时间为0的动画来打断持续时间无限的动画。源码参考WaterRipples.ets。
// TODO: 知识点:用一个持续时间为0的闭包函数修改所有的变量去打断动画
animateTo({ duration: 0 }, () => {
  this.immediatelyOpacity = 0.8;
  this.delayOpacity = 0.8;
  this.immediatelyScale = { x: 1, y: 1 };
  this.delayScale = { x: 1, y: 1 };
})

高性能知识点

本例使用了系统提供的动画接口,降低了系统负载,提升动画帧率。

工程结构&模块类型

   waterriples                                      // har包
   |---WaterRipples.ets                             // 水波纹效果实现页面

模块依赖

不涉及。

参考资料

@显式动画(animateTo)

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

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

开发基础知识:https://qr21.cn/FV7h05

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

基于ArkTS 开发:https://qr21.cn/FV7h05

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

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

腾讯T10级高工技术,安卓全套VIP课程全网免费送:https://qr21.cn/D2k9D5

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue el-table 前端js实现导出数据为Excel

目录 一、背景描述 二、功能分析 三、详细开发 1.导出为excel 2.导出为cvs 四、总结 一、背景描述 有些业务常见,例如前端已经获取到表格的所有数据了,并且后端技术人员比较繁忙,总会提出前端分页,前端排序,甚至…

CycleGAN训练及测试过程细节记录

CycleGAN训练及测试过程细节记录 文章目录 关于训练关于测试 关于训练 1、训练前将数据配置好,并在Pycharm中写好配置信息 2、关于训练过程的参数配置在 options/train_options.py options/base_options.py batch_size:批大小 crop_size:…

Vue.js前端开发零基础教学(一)

目录 第一章 初识Vue.js 前言 开发的好处 一.前端技术的发展 什么是单页Web应用? 二. Vue的简介 三. Vue的特性 四. Vue的版本 五.常见的包管理 六.安装node环境 第一章 初识Vue.js 学习目标: 了解前端技术的发展 了解什么是Vue掌握使用方…

凡事不以规矩不成方圆,合同协议模板范本大全

一、资料描述 本套合同协议资料,大小18.42M,24个压缩文件。 二、资料目录 01-租赁合同.rar(112个文件) 02-装修协议.rar(32个文件) 03-转让或承包协议.rar(32个文件) 04-员工手…

羊大师揭秘,孩子适不适合喝羊奶?

羊大师揭秘,孩子适不适合喝羊奶? 羊奶,这个古老而珍贵的营养饮品,近年来在家长们中间逐渐走红。它以其独特的营养价值和口感受到了众多家庭的青睐。但是,面对市面上琳琅满目的羊奶产品,家长们常常陷入选择…

ViT如何支持变长序列(patches)输入?

问题:当增加输入图像的分辨率时,例如DeiT 从 224 到 384,一般来说会保持 patch size(例如9),因此 patch 的数量 N 会发生了变化。那么视觉transformer是如何处理变长序列输入的? 回答: 在讨论…

MySQL的目录结构

安装目录 /usr/local/mysql数据目录 /usr/local/mysql/data配置目录 /usr/local/etc/my.cnf点击返回 MySQL 快速学习目录

【NLP】TF-IDF算法原理及其实现

🌻个人主页:相洋同学 🥇学习在于行动、总结和坚持,共勉! #学习笔记# 目录 01 TF-IDF算法介绍 02 TF-IDF应用 03 Sklearn实现TF-IDF算法 04 使用TF-IDF算法提取关键词 05 TF-IDF算法的不足 TF-IDF算法非常容易理…

matlab 基于小波变换的油气管道泄露信号检测

1、内容简介 略 71-可以交流、咨询、答疑 基于小波变换的油气管道泄露信号检测 去噪、小波变换、油气管道泄露、信号检测 2、内容说明 摘 要: 油气管道泄漏会造成严重危害,因此,亟需寻找一种能快速检测油气管道信号的技术。传统的 傅里…

Vue2(八):脚手架结构、render函数、ref属性、props配置项、mixin(混入)、插件、scoped样式

一、脚手架结构分析 crlc终止刚刚搭建的vue。 ├── node_modules ├── public │ ├── favicon.ico: 页签图标 │ └── index.html: 主页面 ├── src │ ├── assets: 存放静态资源 │ │ └── logo.png │ │── component: 存放组件 │ │ …

Gin框架 源码解析

https://zhuanlan.zhihu.com/p/136253346 https://www.cnblogs.com/randysun/category/2071204.html 这个博客里其他go的内容也讲的很好 启动 因为 gin 的安装教程已经到处都有了,所以这里省略如何安装, 建议直接去 github 官方地址的 README 中浏览安装…

【数据库基础增删改查】条件查询、分页查询

系列文章目录 🌈座右铭🌈:人的一生这么长、你凭什么用短短的几年去衡量自己的一生! 💕个人主页:清灵白羽 漾情天殇_计算机底层原理,深度解析C,自顶向下看Java-CSDN博客 ❤️相关文章❤️:清灵白羽 漾情天…

AI浸入社交领域,泛娱乐APP如何抓住新风口?

2023年是大模型技术蓬勃发展的一年,自ChatGPT以惊艳姿态亮相以来,同年年底多模态大模型技术在国内及全球范围内的全面爆发,即模型能够理解并生成包括文本、图像、视频、音频等多种类型的内容。例如,基于大模型的文本到图像生成工具…

Samtec科普 | 一文了解患者护理应用连接器

【摘要/前言】 通过医疗专业人士为患者提供护理的种种需求,已经不限于手术室与医院的各种安全状况。当今许多患者的护理都是在其他环境进行,例如医生办公室、健康中心,还有越来越普遍的住家。尤其是需要长期看护的患者,所需的科技…

Mysql数据库概念与安装

目录 一、数据库概述 1、数据库的基本概念 2、数据库管理系统(DBMS) 2.1 数据库管理系统概念 2.2 数据库管理系统工作模式 3、数据库系统(DBS) 3.1 数据库系统概念 3.2 数据库系统发展史 4、关系型数据库与非关系型数据库…

机器学习——终身学习

终身学习 AI不断学习新的任务,最终进化成天网控制人类终身学习(LLL),持续学习,永不停止的学习,增量学习 用线上收集的资料不断的训练模型 问题就是对之前的任务进行遗忘,在之前的任务上表现不好…

【机器学习】无监督学习算法之:K均值聚类

K均值聚类 1、引言2、K均值聚类2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.4.1 距离计算公式2.4.1 中心点计算公式 2.5 代码示例 3、总结 1、引言 小屌丝:鱼哥, K均值聚类 我不懂,能不能给我讲一讲? 小鱼:行&#xf…

AI助手 - Fitten Code

前言 上一篇介绍了商汤AI编程小助手小浣熊 Raccoon,过程中又发现了另外一款国产AI编程助手,那就是本篇要介绍的非十科技出品的Fitten Code。 ​ Fitten Code 主打一个快:超高准确率、超快的响应速度。号称代码生成比GitHub Copilot 快两倍&am…

蓝桥杯模块综合——高质量讲解AT24C02,BS18B20,BS1302,AD/DA(PCF8591),超声波模块

AT24C02——就是一个存储的东西,可以给他写东西,掉电不丢失。 void EEPROM_Write(unsigned char * EEPROM_String,unsigned char addr , unsigned char num) {IIC_Start();IIC_SendByte(0xA0);IIC_WaitAck();IIC_SendByte(addr);IIC_WaitAck();while(nu…

奶牛均分

解法&#xff1a; 假设编号从左到右递增&#xff0c;奶牛每次只能去往左边的牛圈。因此等分最大奶牛数小于等于最右边牛圈奶牛数&#xff0c;不妨设数为k&#xff0c;那么a[i]>k&#xff0c;a[i-1]>2k。。。 做后缀和二分答案就可找到k #include<iostream> #inc…