要实现抖动的效果,需要使用animation动画:
首先写1个 Interpolator - 定义一个动画的变化率(the rate of change)这使得基本的动画效果(alpha, scale, translate, rotate)得以加速,减速,重复等。
cycleinter.xml
<?xml version="1.0" encoding="utf-8"?>
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:cycles="10" />
然后写一个动画效果,可以实现左右 和 上下一起动:shake.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0" android:toXDelta="5"
android:fromYDelta="5" android:toYDelta="0"
android:duration="1000"
android:interpolator="@anim/cycleinter" />
java代码中调用方法如下:
Animation shakeAnimation = AnimationUtils.loadAnimation(this, R.anim.shake);
view.startAnimation(shakeAnimation);
SoundPool soundPool;//声明SoundPool变量
//初始化SoundPool,指向声音文件sound(放在res/raw文件夹下)
soundPool = new SoundPool(10 , AudioManager.STREAM_SYSTEM , 5);//1 最多同时放出的声音数,2声音类型,3声音质量越高越耗费资源
soundPool.load(this, R.raw.sound ,1);//context id 级别
public void soundPlay(){
//第1个参数 ID(放入 soundpool的顺序 第一个放入)
//2,3 左声道 右声道的控制量
//4 优先级
//5 是否循环 0 - 不循环 -1 - 循环
//6 播放比例 0.5-2 一般为1 表示正常播放
soundPool.play(1, 1, 1, 1, 0, 1);
}
public void vibrate(){
//别忘记在AndroidManifest.xml中添加震动权限<uses-permission android:name="android.permission.VIBRATE" />
Vibrator vibrator = (Vibrator)this.getSystemService(VIBRATOR_SERVICE);
long[] pattern = {50 ,400 ,50 , 400}; //停止 开始 停止 开启
vibrator.vibrate(pattern, -1); //不重复设置为-1
}