信息发布→ 登录 注册 退出

Android开发手册Button按钮实现点击音效

发布时间:2026-01-11

点击量:
目录
  • 前言
  • 实践过程
    • 创建个布局
    • 创建Activity
    • AudioBtnUtils.class
  • 结果

    前言

    大家玩游戏的时候都知道按钮除了点击效果还有点击音效,噗~的一声,就挺灵性的。

    在Unity中实现很简单,原生的使用Audio Soure,如果你用过FairyGUI甚至不用写代码,直接妥妥拽拽可视化就搞定了。

    突然有一天小空也想着怎么在APP中实现呢?所以准备封装一个。

    虽然这个功能在实际开发中并没有多大卵用。

    实践过程

    好了,既然要实现点击按钮有音效,那么我们先准备一个音效,放到【res-raw】文件夹下。

    创建个布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <Button
            android:id="@+id/btnAudio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="点击音效" />
    </LinearLayout>
    

    创建Activity

    public class TestActivity extends AppCompatActivity {
        private Button btnAudio;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_test); 
            initView();
            btnAudio.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //播放音频
                    AudioBtnUtils btnUtils=new AudioBtnUtils(TestActivity.this);
                }
            });
        }
        private void initView() {
            btnAudio = (Button) findViewById(R.id.btnAudio);
        }
    }
    

    AudioBtnUtils.class

    public class AudioBtnUtils {
        private SoundPool.Builder builder;
        private SoundPool soundpool;
        private int soundId;
        public AudioBtnUtils(Context context) {
            builder = new SoundPool.Builder();
            //AudioAttributes是一个封装音频各种属性的方法
            AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder();
            //设置音频流的合适的属性
            attrBuilder.setLegacyStreamType(AudioManager.STREAM_SYSTEM);
            soundpool = builder.build();
            soundId = soundpool.load(context, R.raw.audio_btn_click, 1);
            //是否加载完成的监听
            soundpool.setOnLoadCompleteListener((soundPool, sampleId, status) -> {
                //加载完毕后再播放
                soundpool.play(soundId, 1f, 1f, 0, 0, 1);
            });
        }
    }
    

    上面play方法共有6个参数 play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)

    • 参数soundID:代表声音文件id;
    • 参数leftVolume、rightVolume:指定左、右的音量:
    • 参数priority:指定播放声音的优先级,数值越大,优先级越高;
    • 参数loop:指定是否循环,0:不循环,-1:循环,其他值表示要重复播放的次数;
    • 参数rate:指定播放的比率,数值可从0到2, 1为正常比率。  

    这只是基本应用,有什么的更好的方法呢?

    要么写个单例,全局就有一个,要么创建个自定义的按钮里面写逻辑,以后按钮就用这个自定义的。

    那么为什么不用MediaPlayer呢?

    MediaPlayer:占用资源较高,不支持同时播放多个音频。

    SoundPool:可以同时播放多个短促的音频,而且占用的资源较少。适合在程序中播放按键音,或者消息提示音等。

    结果

    做完之后我突然想起来,手机的设置里面默认就有点击声音的设置啊。一般在【设置-声音和震动-触摸互动】。

    所以,我弄了个寂寞啊!

    以上就是Android开发手册Button按钮实现点击音效的详细内容,更多关于Android开发Button点击音效的资料请关注其它相关文章!

    在线客服
    服务热线

    服务热线

    4008888355

    微信咨询
    二维码
    返回顶部
    ×二维码

    截屏,微信识别二维码

    打开微信

    微信号已复制,请打开微信添加咨询详情!