HarmonyOS NEXT应用开发案例—使用弹簧曲线实现抖动动画及手机振动效果案例
介绍
本示例介绍使用vibrator.startVibration方法实现手机振动效果,用animateTo显示动画实现点击后的抖动动画。
效果图预览

使用说明
- 加载完成后显示登录界面,未勾选协议时点击一键登录按钮会触发手机振动效果和提示文本的抖动动画。
实现思路
- 创建一个函数startVibrate()调用vibrator.startVibration方法实现手机振动效果(需要权限:ohos.permission.VIBRATE)。源码参考VibrateEffect.ets
startVibrate() {
try {
// TODO: 知识点:vibrator.startVibration 根据指定振动效果和振动属性触发马达振动
vibrator.startVibration({
type: 'time',
// 持续触发马达振动时间600ms
duration: CONFIGURATION.VIBRATION_TIME,
}, {
id: 0,
usage: 'alarm',
}, (error: BusinessError) => {
if (error) {
logger.error(`Failed to start vibration. Code: ${error.code}, messege: ${error.message}`);
return;
}
logger.info('Succeed in starting vibration');
});
} catch (err) {
let e: BusinessError = err as BusinessError;
logger.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
}
}
- 创建一个函数startAnimation()使用animateTo显示动画实现提示文本的抖动动画。源码参考VibrateEffect.ets
startAnimation() {
// TODO: 知识点:通过animateTo显示动画指定由于闭包代码导致的状态变化插入过渡动效
animateTo({
duration: CONFIGURATION.ANIMATION_TIME,
// 弹簧曲线:初始速度100,质量1,刚度80,阻尼10
curve: curves.springCurve(CONFIGURATION.VELOCITY_VALUE, CONFIGURATION.MASS_VALUE,
CONFIGURATION.STIFFNESS_VALUE, CONFIGURATION.DAMPING_VALUE),
// 播放2次
iterations: CONFIGURATION.PLAYBACK_COUNT,
},
() => {
// 抖动动偏移量
this.translateX = CONFIGURATION.TRANSLATE_OFFSET_X;
})
this.translateX = CONFIGURATION.POSITION_ZERO;
}
高性能知识点
不涉及
工程结构&模块类型
vibrateeffect // har类型
|---components
| |---constantsData.ets // 定义常量数据
|---ProductView.ets // 视图层-场景列表页面
模块依赖
参考资料
HarmonyOS NEXT应用开发案例—使用弹簧曲线实现抖动动画及手机振动效果案例的更多相关文章
- HarmonyOS三方件开发指南(12)——cropper图片裁剪
鸿蒙入门指南,小白速来!0基础学习路线分享,高效学习方法,重点答疑解惑--->[课程入口] 目录:1. cropper组件功能介绍2. cropper使用方法3. cropper组件开发实现4. ...
- HarmonyOS三方件开发指南(13)-SwipeLayout侧滑删除
鸿蒙入门指南,小白速来!0基础学习路线分享,高效学习方法,重点答疑解惑--->[课程入口] 目录:1. SwipeLayout组件功能介绍2. SwipeLayout使用方法3. SwipeLa ...
- HarmonyOS三方件开发指南(14)-Glide组件功能介绍
<HarmonyOS三方件开发指南>系列文章合集 引言 在实际应用开发中,会用到大量图片处理,如:网络图片.本地图片.应用资源.二进制流.Uri对象等,虽然官方提供了PixelMap进行图 ...
- HarmonyOS三方件开发指南(15)-LoadingView功能介绍
目录: 1. LoadingView组件功能介绍2. Lottie使用方法3. Lottie开发实现4.<HarmonyOS三方件开发指南>系列文章合集 1. LoadingView组件功 ...
- HarmonyOS三方件开发指南(16)-VideoCache 视频缓存
目录: 1.引言 2.功能介绍 3.VideoCache使用指南 4.VideoCache开发指南 5.<HarmonyOS三方件开发指南>系列文章合集 引言 对于视频播放器这个app大家 ...
- HarmonyOS三方件开发指南(17)-BottomNavigationBar
目录: 1.引言 2.功能介绍 3.BottomNavigationBar使用指南 4.BottomNavigationBar开发指南 5.<HarmonyOS三方件开发指南>文章合集 引 ...
- HarmonyOS三方件开发指南(19)-BGABadgeView徽章组件
目录: 1.引言 2.功能介绍 3.BGABadgeView 使用指南 4.BGABadgeView 开发指南 5.<HarmonyOS三方件开发指南>系列文章合集 引言 现在很多的APP ...
- 运动曲线提升CSS动画效果
原文链接 译文\译者鞠大宝 先有UI动画,然后才会有好的UI动画.好的动画会让人惊叹“哇哦!”——因为页面看上去很流畅.很漂亮,最重要的是,自然,一点都不会让人觉得不和谐或者僵硬死板.如果你经常逛Dr ...
- Windows Phone开发(39):漫谈关键帧动画上篇
原文:Windows Phone开发(39):漫谈关键帧动画上篇 尽管前面介绍的几种动画会让觉得很好玩了,但是,不知道你是否发现,在前面说到的一系列XXXAnimation中,都有一个共同点,那就是仅 ...
- iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程
iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程 一.引言 二.初识CoreAnimation 三.锚点对几何属性的影响 四.Layer与View之间的关系 ...
随机推荐
- html添加css样式的两种方法
html添加css样式有三种方法,分别为行内式(使用style属性,在特定的HTML标签内使用).内嵌式(style标签把css代码放在特定页面的head部分中).外联式(使用link标签,将外部 ...
- linux命令行下使用代理
有两种方法: 1.curl -x <proxy_ip>:<proxy_port> <real_website> 举例:curl -x 12.99.109.52:80 ...
- PAT甲级【1014 Waiting in Line】
考察双向链表 import java.io.IOException; import java.io.InputStreamReader; import java.io.StreamTokenizer; ...
- atcoder: Moves on Binary Tree
先进行压缩move的次数,再用biginteger. import java.io.BufferedReader; import java.io.IOException; import java.io ...
- Java原生序列化与反序列化
序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程. 为什么需要序列化? 序列化分为两大部分:序列化和反序列化.序列化是这 ...
- TP6框架--EasyAdmin学习笔记:excel的数据,图片处理
这是我写的学习EasyAdmin的第七章,这一章我给大家分享下如何处理excel中的数据,图片 原理就是使用easyadmin中封装好的phpexcel,来进行数据的导入,view层我们需要一个用了导 ...
- drools中使用function
一.背景 当我们在drools中编写规则时,有些时候存在重复的代码,那么我们是否可以将这些重复代码抽取出来,封装成一个function来调用呢?那么在drools中如何自定义function? 二.需 ...
- 在命令行中使用 cl.exe编译 C/C++ 程序并执行
cl.exe是Microsoft C/C++编译器. 我的VC6.0安装目录为:D:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev9 ...
- KingbaseES 逻辑读与物理读
oracle数据库中逻辑读,物理读 数据访问方式:数据库少不了和操作系统进行数据交互,表数据最好的方式是从数据库共享池中访问到,避免发生磁盘IO,当然如果共享池中没有访问到数据就难免发生磁盘IO. 物 ...
- 美团一面:项目中使用过Redis吗?我说用Redis做缓存。他对我哦了一声
引言 Redis,作为一种开源的.基于内存且支持持久化的键值存储系统,以其卓越的性能.丰富灵活的数据结构和高度可扩展性在全球范围内广受欢迎.Redis不仅提供了一种简单直观的方式来存储和检索数据,更因 ...