Android 添加按钮点击音效

最近项目中遇到的一个需求:点击金币,播放金币掉落的声音。实现方式如下:

1. 在res下新建raw,把资源文件coin_click.wav放进去
Android 添加按钮点击音效_第1张图片
sybil052-20190723-163221.png
2. 建立单例类

代码如下:

public class SoundPoolUtil {
    private static SoundPoolUtil soundPoolUtil;
    private SoundPool soundPool;

    //单例模式
    public static SoundPoolUtil getInstance(Context context) {
        if (soundPoolUtil == null)
            soundPoolUtil = new SoundPoolUtil(context);
        return soundPoolUtil;
    }

    @SuppressLint("NewApi")//这里初始化SoundPool的方法是安卓5.0以后提供的新方式
    private SoundPoolUtil(Context context) {
        soundPool = new SoundPool.Builder().build();
        //加载音频文件
        soundPool.load(context, R.raw.coin_click, 1);
    }

    public void play(int number) {
        Log.d(TAG, "number " + number);
        /**
         * 播放音频
         * params说明:
         * //左耳道音量【0~1】
         * //右耳道音量【0~1】
         * //播放优先级【0表示最低优先级】
         * //循环模式【0表示循环一次,-1表示一直循环,其他表示数字+1表示当前数字对应的循环次数】
         * //播放速度【1是正常,范围从0~2】
         */
        soundPool.play(number, 1, 1, 0, 0, 1);
    }
}
3. 具体使用

代码如下:

private void initView() {
    soundInstance = SoundPoolUtil.getInstance(this);
    ...
    mCoinView.setOnCoinClickListener(new CoinView.CoinClickListener() {
            @Override
            public void coinClick(View v, CoinBean coinBean) {
                if(coinBean == null){
                    showDialog();
                    return;
                }
                final float x = v.getX();
                final float y = v.getY();
                // 播放音效
                soundInstance.play(1);
                // 请求接口
                stealVK(v, x, y, coinBean.getId());
                // 移除金币
                Iterator iterator = mCoinBeans.iterator();
                while (iterator.hasNext()) {
                    CoinBean c = iterator.next();
                    if (c.getId() == coinBean.getId()) {
                        iterator.remove();
                    }
                }
                // 展示新一轮金币
                if(mCoinBeans.size() == 0 && allCoins.size() != 0){
                    index += 1;
                    maxCount -= 1;
                    if(allCoins.size() > index){
                        mCoinBeans.addAll(allCoins.get(index));
                        if(maxCount > mCoinBeans.size()){
                            mCoinView.setCoins(mCoinBeans, mCoinBeans.size());
                        }else {
                            mCoinView.setCoins(mCoinBeans, maxCount);
                        }
                    }
                }
                totalNum = FormateUtil.add(totalNum, coinBean.getNumber());
                NumAnim.startAnim(tvVkNum, Double.parseDouble(totalNum));
                addTextView(v, coinBean.getNumber());
            }
        });
}

你可能感兴趣的:(Android 添加按钮点击音效)