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

来源:互联网 发布:傲剑九阳神功升级数据 编辑:程序博客网 时间:2024/05/04 06:01

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