当前位置:首页 > uni-app

uniapp实现摇一摇

2026-03-26 14:23:28uni-app

实现摇一摇功能的核心步骤

监听设备加速度变化
通过uni.onAccelerometerChangeAPI监听设备加速度变化。当用户摇晃手机时,加速度传感器会触发回调函数,返回x、y、z三个方向的加速度值。

判断摇晃阈值
设定一个加速度变化的阈值(如1.5g)。当任意方向的加速度变化超过阈值时,认为用户执行了摇一摇动作。可通过计算三个方向加速度的矢量和来判断:

$$ \sqrt{x^2 + y^2 + z^2} > threshold $$

防抖处理
避免短时间内多次触发,需设置时间间隔(如1秒)。通过记录最后一次触发时间,与当前时间对比实现防抖。

代码实现示例

// 在页面中监听加速度变化
export default {
  data() {
    return {
      lastShakeTime: 0,
      shakeThreshold: 15 // 根据实际需求调整阈值
    }
  },
  onLoad() {
    this.startShakeListener()
  },
  onUnload() {
    this.stopShakeListener()
  },
  methods: {
    startShakeListener() {
      uni.onAccelerometerChange((res) => {
        const { x, y, z } = res
        const acceleration = Math.sqrt(x * x + y * y + z * z)

        if (acceleration > this.shakeThreshold) {
          const currentTime = Date.now()
          if (currentTime - this.lastShakeTime > 1000) { // 1秒内防抖
            this.lastShakeTime = currentTime
            this.handleShake()
          }
        }
      })
    },

    stopShakeListener() {
      uni.stopAccelerometerChange()
    },

    handleShake() {
      uni.showToast({
        title: '摇一摇成功',
        icon: 'none'
      })
      // 执行摇一摇后的业务逻辑
    }
  }
}

注意事项

权限配置
manifest.json中需要添加加速度计权限声明(仅Android需要):

"permission": {
  "android.permission.ACCESS_COARSE_LOCATION": {}
}

iOS兼容性
iOS 13+需要用户授权运动与健身权限。可在App.vueonLaunch中添加:

uni.authorize({
  scope: 'scope.motion',
  success() { console.log('授权成功') }
})

性能优化
长时间监听会影响电池寿命,建议在页面不可见时(如onHide)停止监听,可见时(如onShow)重新开启。

扩展功能

振动反馈
摇动成功后可通过uni.vibrate提供触觉反馈:

uni.vibrate({
  type: 'medium' // iOS可选light/medium/heavy
})

自定义动画
结合CSS动画实现摇动UI效果,例如:

uniapp实现摇一摇

.shake-animation {
  animation: shake 0.5s cubic-bezier(.36,.07,.19,.97) both;
}
@keyframes shake {
  10%, 90% { transform: translateX(-1px) }
  20%, 80% { transform: translateX(2px) }
  30%, 50%, 70% { transform: translateX(-4px) }
  40%, 60% { transform: translateX(4px) }
}

标签: uniapp摇一摇
分享给朋友:

相关文章

uniapp样式库

uniapp样式库

uniapp 常用样式库推荐 uView UI uView 是专为 uniapp 设计的多端兼容 UI 框架,提供丰富的组件和工具类。支持 Vue3 组合式 API,内置主题定制功能,常用于快速构建企…

uniapp分享到facebook

uniapp分享到facebook

使用uniapp分享到Facebook的方法 在uniapp中实现分享到Facebook功能,可以通过调用原生插件或使用第三方SDK。以下是具体实现方式: 安装Facebook SDK插件 在uni…

uniapp指南

uniapp指南

开发环境搭建 下载HBuilderX作为官方推荐的开发工具,支持Windows和Mac系统。安装后创建uni-app项目,选择模板(如默认模板、Hello Uni-app等)。确保Node.js版本在…

uniapp编译结果

uniapp编译结果

uniapp编译结果 uniapp的编译结果会根据目标平台不同而生成不同的输出文件。以下是主要平台的编译结果说明: H5平台 编译后会生成一个/dist/build/h5目录,包含标准的HTML5应…

uniapp 销售日报

uniapp 销售日报

实现销售日报功能的步骤 数据收集与整理 销售日报需要收集每日销售数据,包括销售额、订单数量、商品类别等。数据可以从后端API获取或本地数据库存储。使用uni.request调用接口获取数据,确保数据结…

uniapp 滑动条

uniapp 滑动条

uniapp 滑动条实现方法 在uniapp中实现滑动条可以通过内置组件或第三方插件完成。以下是几种常见方法: 使用slider组件 uniapp内置了slider组件,可直接实现基础滑动条…