view抖动效果,可以同时添加震动和声音

要实现抖动的效果,需要使用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" />

上面两个xml放在res/anim目录下;

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	
}


你可能感兴趣的:(view抖动效果,可以同时添加震动和声音)