Contact Us

首页 资讯正文

Android 微信摇一摇功能实现手机摇一摇「Android 微信摇一摇功能实现」

发布者:yu发布时间:2025-03-07访问量:322

Android 微信摇一摇功能实现手机摇一摇「Android 微信摇一摇功能实现」

  • 用户晃动后两张图片分开, 显示后面图片
  • 晃动后伴随震动效果, 声音效果

根据以上的简单分析, 我们就知道该怎么做了, Just now

布局没啥可说的, 大家直接看代码吧



step1: 在onStart() 方法中获取传感器的SensorManager


step2: 紧接着我们就要在Pause中注销传感器


Note: 至于为什么我们要在onStart和onPause中执行SensorManager的注册和注销, 就是因为, 防止在界面退出(包括按Home键)时, 摇一摇依旧生效(代码中有注释)

step3: 在step1中的注册监听事件方法中, 我们传入了当前Activity对象, 故让其实现回调接口, 得到以下方法


Note: 当用户晃动手机会调用onSensorChanged方法, 可以做一些相应的操作
为解决动画和震动延迟, 我们开启了一个子线程来实现.
子线程中会通过发送Handler消息, 先开始动画效果, 并伴随震动和声音
先把Handler的实现放一放, 我们再来看一下震动和声音的实现

step 1: 先获取到震动相关的服务,注意要加权限. 至于音效, 我们采用SoundPool来播放, 在这里非常感谢Vincent 的贴子. 好, 初始化SoundPool

震动权限



Note: 大家可能发现SoundPool的构造方法已经过时, 不过不用担心这是Api21之后过时的, 所以也不算太"过时"吧

step2: 接下来我们就要介绍Handler中的实现了, 为避免Activity内存泄漏, 采用了软引用方式


Note: 内容不多说了, 代码注释中很详细, 还有一个startAnimation方法
我先来说一下它的参数, true表示布局中两张图片从打开到关闭的动画, 反之, false是从关闭到打开状态, 上代码

step3: startAnimaion方法上的实现


至此 核心代码已经介绍完毕 , 但是还有部分小细节不得不提一下

  1. 大家要在初始化View之前将上下两条横线GONE掉, 用GONE是不占位的

2.咱们的摇一摇最好是只竖屏 (毕竟我也没见过横屏的摇一摇), 加上下面代码