当前位置: 首页 > news >正文

uniapp 震动功能实现

项目场景:

提示:这里简述项目相关背景:

在项目中有时候需要一些功能,比如震动


描述

提示:这里描述项目中遇到的问题:

在移动应用中,震动反馈是提升用户体验的重要方式。uniapp 提供了两种震动方式:

  • 短震动:轻微的触感反馈
  • 长震动:较强的震动反馈

分析:

提示:这里填写问题的分析:

1. 短震动 (uni.vibrateShort)

  • 作用:触发较短时间的震动
  • 震动时长:约 15ms
  • 适用场景:按钮点击、操作反馈等轻量级交互
uni.vibrateShort(options: UniNamespace.VibrateShortOptions)

参数说明:

interface VibrateShortOptions {success?: () => void  // 接口调用成功的回调函数fail?: (err: any) => void  // 接口调用失败的回调函数complete?: () => void  // 接口调用结束的回调函数(调用成功、失败都会执行)
}

2. 长震动 (uni.vibrateLong)

  • 作用:触发较长时间的震动
  • 震动时长:约 400ms
  • 适用场景:游戏结束、重要提示等需要明显震动反馈的场合
uni.vibrateLong(options: UniNamespace.VibrateLongOptions)

参数说明:

interface VibrateLongOptions {success?: () => void  // 接口调用成功的回调函数fail?: (err: any) => void  // 接口调用失败的回调函数complete?: () => void  // 接口调用结束的回调函数(调用成功、失败都会执行)
}

3:平台差异说明


| API | App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 |

|-----|-----|----| ---------- | ------------ | ---------- |

| vibrateShort | √ | x | √ | √ | √ |

| vibrateLong | √ | x | √ | √ | √ |

4:注意事项

权限要求:

  • App 平台需要在 manifest.json 中配置 vibrate 权限
  • 部分平台可能需要用户授权
  • 使用场景:
  • 短震动适合用于轻量级的交互反馈
  • 长震动建议用于重要提示,避免过度使用影响用户体验
  • 兼容性处理:
  • 建议添加错误处理逻辑
  • 在不支持的平台上需要提供替代方案

实例方案:

提示:这里填写该问题的具体解决方案:

 1. 创建震动工具函数

useVibrate.ts 文件

/*** 震动工具函数*/
export function useVibrate() {// 短震动const vibrateShort = () => {uni.vibrateShort({success: () => {console.log('短震动成功')},fail: (err) => {console.error('短震动失败:', err)}})}// 长震动const vibrateLong = () => {uni.vibrateLong({success: () => {console.log('长震动成功')},fail: (err) => {console.error('长震动失败:', err)}})}return {vibrateShort,vibrateLong}
}

2:页面中使用

<template><view class="container"><button @click="handleShortVibrate">短震动</button><button @click="handleLongVibrate">长震动</button></view>
</template><script setup lang="ts">
import { useVibrate } from '@/composables/useVibrate'const { vibrateShort, vibrateLong } = useVibrate()const handleShortVibrate = () => {vibrateShort()
}const handleLongVibrate = () => {vibrateLong()
}
</script>


文章转载自:
http://appellant.lbooon.cn
http://amphiboly.lbooon.cn
http://adonis.lbooon.cn
http://chronometry.lbooon.cn
http://alienator.lbooon.cn
http://bureaucratism.lbooon.cn
http://chesterfield.lbooon.cn
http://bimetallic.lbooon.cn
http://beat.lbooon.cn
http://chloroplatinic.lbooon.cn
http://apagogical.lbooon.cn
http://chateau.lbooon.cn
http://amphitheatral.lbooon.cn
http://bctv.lbooon.cn
http://biscuit.lbooon.cn
http://befallen.lbooon.cn
http://aerostatics.lbooon.cn
http://angelfish.lbooon.cn
http://bata.lbooon.cn
http://bonobo.lbooon.cn
http://awash.lbooon.cn
http://brainsick.lbooon.cn
http://athymic.lbooon.cn
http://chassid.lbooon.cn
http://aidedecamp.lbooon.cn
http://chlorodyne.lbooon.cn
http://bill.lbooon.cn
http://bestiary.lbooon.cn
http://atropinization.lbooon.cn
http://baluster.lbooon.cn
http://www.dtcms.com/a/175825.html

相关文章:

  • AKS 网络深入探究:Kubenet、Azure-CNI 和 Azure-CNI(overlay)
  • 2025年渗透测试面试题总结-网络安全、Web安全、渗透测试笔试总结(一)(附回答)(题目+回答)
  • 【卡特兰数】不同的二叉搜索树
  • Spring 如何解决循环依赖问题?
  • 大模型时代的数据治理与数据资产管理研究方向
  • nginx之proxy_redirect应用
  • 数据结构之栈与队列
  • uniapp tabBar 中设置“custom“: true 在H5和app中无效解决办法
  • uniapp-商城-43-shop 后台管理 页面
  • idea连接mongodb配置schemas
  • yarn的概述
  • B站pwn教程笔记-7
  • RabbitMQ如何保证消息不丢失?
  • RabbitMQ中Exchange交换器的类型
  • 博图--硬件输入中断程序示例
  • 【CUDA C实战演练】CUDA介绍、安装、C代码示例
  • 从 “机器人 +“ 到 “+ 机器人“:算力政策撬动的产业生态革命
  • Android 蓝牙开发调试总结
  • 基于flask+pandas+csv的报表实现
  • 深入探讨 UDP 协议与多线程 HTTP 服务器
  • 8.12 GitHub Sentinel企业级进化:容器化优化×AI监控,效率提升300%实战
  • hadoop的序列化
  • LLaMA-Omni 2:基于 LLM 的自回归流语音合成实时口语聊天机器人
  • vue2开发者sass预处理注意
  • 全局网络:重构数字时代的连接范式
  • JDK Version Manager (JVMS)
  • matlab App自动化安装和卸载
  • 集群免密登录
  • 机器学习之嵌入(Embeddings):从理论到实践
  • Compose Multiplatform iOS 稳定版发布:可用于生产环境,并支持 hotload