美文网首页
Android 添加按钮点击音效

Android 添加按钮点击音效

作者: sybil052 | 来源:发表于2019-07-23 17:00 被阅读0次

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

    1. 在res下新建raw,把资源文件coin_click.wav放进去
    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<CoinBean> 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 添加按钮点击音效

          本文链接:https://www.haomeiwen.com/subject/fcdalctx.html