首页 > 其他分享 >HarmonyOS NEXT应用开发案例—使用弹簧曲线实现抖动动画及手机振动效果案例

HarmonyOS NEXT应用开发案例—使用弹簧曲线实现抖动动画及手机振动效果案例

时间:2024-04-22 21:47:13浏览次数:16  
标签:动画 HarmonyOS 抖动 振动 NEXT 案例 vibrator error CONFIGURATION

介绍

本示例介绍使用vibrator.startVibration方法实现手机振动效果,用animateTo显示动画实现点击后的抖动动画。

效果图预览

使用说明

  1. 加载完成后显示登录界面,未勾选协议时点击一键登录按钮会触发手机振动效果和提示文本的抖动动画。

实现思路

  1. 创建一个函数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}`);
    }
  }
  1. 创建一个函数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                             // 视图层-场景列表页面

模块依赖

本实例依赖common模块来实现日志的打印、资源的调用

参考资料

显式动画

@ohos.vibrator (振动)

访问控制授权申请

标签:动画,HarmonyOS,抖动,振动,NEXT,案例,vibrator,error,CONFIGURATION
From: https://www.cnblogs.com/HarmonyOSNext/p/18151608

相关文章

  • 使用pytesseract库识别图形验证码的简单案例
    importrequestsfromPILimportImageimportpytesseract#获取验证码图片url='http://jw.glutnn.cn/academic/getCaptcha.do?captchaCheckCode=0&random=0.20354331774429668'response=requests.get(url)#保存验证码图片withopen('captcha.png',&......
  • DRF案例
    1反序列化更新,instance就传要修改的对象,保证修改完成defupdate(self,instance,validated_data):publish_id=validated_data.pop('publish')author_id=validated_data.pop('author')forkinvalidated_data:setattr(instance,k,valida......
  • 鸿蒙HarmonyOS实战-ArkUI动画(弹簧曲线动画)
    ......
  • HarmonyOS开发实例:【相机和媒体库】
    介绍在ArkTS中调用相机拍照和录像,以及如何使用媒体库接口进行媒体文件的增、删、改、查操作。本示例用到了权限管理能力相机模块能力接口图片处理接口音视频相关媒体业务能力接口媒体库管理接口设备信息能力接口文件存储管理能力接口弹窗能力接口效果预览使用说明1......
  • php之性能优化案例
    php是一个很流行的脚本语言,现在很多公司(新浪、优酷、百度、搜狐、淘宝等等)在使用这种语言进行网站开发。这篇文章希望能够提高你的php脚本性能。请记住你的php脚本性能,很多时候依赖于你的php版本、你的webserver环境和你的代码的复杂度。优化你代码中的瓶颈Hoare曾经说过“过早......
  • SpringCloud进行nacos的服务注册和服务管理案例
    SpringCloud服务注册pom.xml<!--SpringCloud服务注册和发现--><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.8.RELEASE</version>......
  • IfcUnitAssignment案例
    当没有使用实体类型IfcMeasureWithUnit作为属性的数据类型更具体地定义单位时,项目的全局单位分配定义度量值和值的全局单位。 Anexamplewhereaproject’sglobalbasiclength,area,volumeandtimeunitsaredefinedasSIunits:#1=IFCPROJECT(’00ZhrqZYLBcgy$rVVa......
  • 队列-经典应用案例
    这里来简单举几个经典的场景如"击鼓传花","字符串回文监测"等来加深对队列这个结构的直观认识.单端队列-击鼓传花这里先介绍一种队列的变种叫循环队列,即元素从队首出队后,立即又进行从队尾入队,类似行程了一个圈,与之对应的一个经典游戏就是"击鼓传花",英文叫ho......
  • 【用户案例】数字化转型中的新质生产力:东风日产的RPA实践与启示
    在数字化时代的浪潮中,企业数字化转型已成为不可逆转的趋势。面对工效联动和数字化转型的双重挑战,传统汽车行业急需寻找新的突破点。东风日产,作为一家拥有 1.9万名员工的汽车企业,为我们展示了如何成功实现内部转型东风日产是东风汽车有限公司旗下的重要乘用车板块,致力于以先进......
  • next.js app目录 i18n国际化简单实现
    最近在用next写一个多语言的项目,找了好久没找到简单实现的教程,实践起来感觉都比较复杂,最后终于是在官方文档找到了,结合网上找到的代码demo,终于实现了,在这里简单总结一下。此教程适用于比较简单的项目实现,如果你是刚入门next,并且不想用太复杂的方式去实现一个多语言项目,那么这个教......