Android如何给按钮添加点击音效

发布时间 - 2026-01-11 00:22:07    点击率:

有很多制作精良的APP都自带点击音效,那么如何简单的来实现这一效果,这里需要使用到的一个概念叫做SoundPool,这个类主要用于播放一些比较小的音频文件,因为比较方便,通常用在游戏里比较多。

代码

闲话不多说,我们现在需要做一个功能,就是点击某一按钮的时候同时播放音效出来。

首先准备好你的音频文件,然后,在你的rec下面简历一个文件夹命名为raw,放入音频文件,如图所示:


然后布局文件只有一个按钮

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">

  <Button
    android:id="@+id/btnPlay"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_margin="5dp"
    android:text="Play Wav"
    tools:ignore="HardcodedText" />

</LinearLayout>

然后是MainActivity

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

  private Button btnPlay;

  private SoundPool soundPool;//声明一个SoundPool
  private int soundID;//创建某个声音对应的音频ID

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    btnPlay = (Button) findViewById(R.id.btnPlay);
    btnPlay.setOnClickListener(this);
    initSound();
  }

  @SuppressLint("NewApi")
  private void initSound() {
    soundPool = new SoundPool.Builder().build();
    soundID = soundPool.load(this, R.raw.testsong, 1);
  }

  @Override
  public void onClick(View v) {
    switch (v.getId()) {
      case R.id.btnPlay:
        playSound();
        break;
    }
  }

  private void playSound() {
    soundPool.play(
        soundID,
        0.1f,   //左耳道音量【0~1】
        0.5f,   //右耳道音量【0~1】
        0,     //播放优先级【0表示最低优先级】
        1,     //循环模式【0表示循环一次,-1表示一直循环,其他表示数字+1表示当前数字对应的循环次数】
        1     //播放速度【1是正常,范围从0~2】
    );
  }
}

这样当你点击按钮的时候就会自动播放音效,要注意,这里初始化SoundPool的方法是安卓5.0以后提供的新方式,5.0以前的话可以使用:

soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);

其中构造方法放参数不在解释,随着安卓的发展,5.0之前的份额也会越来越少,所以在以后的文中尽量使用比较新的SDK提供的方法。

以上代码完成后在手机上运行,点击可以听到音效。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android按钮添加点击音效  # APP自带点击音效  # Android按钮点击音效  # 关于android连续点击出现多个Activity界面的解决方法  # Android实现连续点击多次事件的代码详解  # Android 自定义按钮点击事件和长按事件对比  # Android中AlertDialog 点击按钮后不关闭对话框的功能  # Android之有效防止按钮多次重复点击的方法(必看篇)  # android屏蔽按钮连续点击的示例代码  # 这一  # 就会  # 也会  # 有很多  # 当你  # 要注意  # 做一个  # 只有一个  # 可以使用  # 我们现在  # 自带  # 较小  # 多说  # 比较多  # 用在  # 来实现  # 主要用于  # 命名为  # 机上  # 在手 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python文本处理实践_日志清洗解析【指导】  LinuxCD持续部署教程_自动发布与回滚机制  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  如何在Ubuntu系统下快速搭建WordPress个人网站?  微信小程序 require机制详解及实例代码  用yum安装MySQLdb模块的步骤方法  Laravel API资源类怎么用_Laravel API Resource数据转换  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  常州企业网站制作公司,全国继续教育网怎么登录?  如何快速完成中国万网建站详细流程?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  油猴 教程,油猴搜脚本为什么会网页无法显示?  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  如何用好域名打造高点击率的自主建站?  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  如何确认建站备案号应放置的具体位置?  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  如何在云主机快速搭建网站站点?  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  如何快速生成高效建站系统源代码?  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  黑客如何利用漏洞与弱口令入侵网站服务器?  浅谈Javascript中的Label语句  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  bing浏览器学术搜索入口_bing学术文献检索地址  如何在新浪SAE免费搭建个人博客?  Android实现代码画虚线边框背景效果  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  原生JS实现图片轮播切换效果  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  如何快速搭建自助建站会员专属系统?  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  javascript读取文本节点方法小结  制作电商网页,电商供应链怎么做?  实例解析angularjs的filter过滤器  如何利用DOS批处理实现定时关机操作详解  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Laravel如何处理和验证JSON类型的数据库字段  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  在线教育网站制作平台,山西立德教育官网?  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Laravel distinct去重查询_Laravel Eloquent去重方法  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出