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

目录
  • 前言
  • 实践过程
    • 创建个布局
    • 创建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点击音效的资料请关注我们其它相关文章!

(0)

相关推荐

  • Android中Button实现点击换图案及颜色

    目录 基本框架 基本属性 文本与背景 主题修改 点击效果 图片变换 颜色变换 总结 基本框架 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:lay

  • Android开发手册TextView控件及阴影效果实现

    目录 实践过程 初识 文字阴影 TextView是Android中最简单也是最常见的控件.今天小空就带大家会会她. 实践过程 初识 经过前两篇常用属性和不常用属性的讲解,是不是有些懵了,不要慌,真实开发中用到的属性其实连五分之一都到不了. 我们先来创建个基本的文本控件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.a

  • Android开发手册TextView属性实现效果盘点

    目录 前言 实践过程 如何实现drawable的动画? 图文混排 前言 前面小空带大家了解了TextView的属性,实践了一些自定义粗细,阴影效果,链接形文字. 但这还仅仅局限在用她本身的能力来实现的,那么她还能有什么花样呢? 我们先提出三个问题: 例如有些时钟的显示,那如何让文本带有动画效果? 例如如何让一个文本支持多种颜色和大小? 那有没有统一快捷的方案? 我们带着疑问来看解决方案,大佬直接看最后开源项目. 实践过程 如何实现drawable的动画? 我们用帧动画举例,准备一个序列帧动画,放

  • Android实现触发html页面的Button控件点击事件方式

    在android开发中,往往有时会加载html界面,同时需要与之html里面的控件进行交互.这里简单介绍一下如何在android中触发加载的html界面的Button控件. 1. 首先看Activity的代码: 首先我们要获取到当前的WebView控件,然后通过html的路径加载html界面,当前的html路径我是在本地的,然后设置 WebSettings webSettings = mWebView.getSettings(); 这一句代码.之后添加 webSettings.setJavaSc

  • Android Button按钮点击背景和文字变化操作

    Android 原生的按钮点击状态是有变化的,但是如果是自己加了一个.png格式的图片为背景色,按钮点击就不会有任何效果,为了达到点击按钮有一闪的效果,我们就需要准备两张图进行切换, 而且文字也要变色,老规矩废话不多说直接上代码: 按钮背景图片放在 drawable/background_button.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="h

  • Android开发手册shape属性和子属性使用说明

    目录 shape属性详解 子属性详解 shape属性详解 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="30dp" android:innerRadiusRatio="2" androi

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

    目录 前言 实践过程 创建个布局 创建Activity AudioBtnUtils.class 结果 前言 大家玩游戏的时候都知道按钮除了点击效果还有点击音效,噗~的一声,就挺灵性的. 在Unity中实现很简单,原生的使用Audio Soure,如果你用过FairyGUI甚至不用写代码,直接妥妥拽拽可视化就搞定了. 突然有一天小空也想着怎么在APP中实现呢?所以准备封装一个. 虽然这个功能在实际开发中并没有多大卵用. 实践过程 好了,既然要实现点击按钮有音效,那么我们先准备一个音效,放到[res

  • Android开发中button按钮的使用及动态添加组件方法示例

    本文实例讲述了Android开发中button按钮的使用及动态添加组件方法.分享给大家供大家参考,具体如下: MainActivity.java package com.example.lab2; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.Menu; import android.view.View; import andro

  • Android开发手册Button实现selector选择器

    目录 实践过程 selector是按钮最常用的功能,对美化控件的作用很大. 上节我们说了selector和shape联合使用,但偏向shape的介绍,今天主要说selector. 实践过程 我们先按照上一节的shape方式创建两个shape背景btn_selector_shape1.xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas

  • Android实现圆角Button按钮

    本文实例讲述了Android开发圆角Button按钮实现过程,分享给大家供大家参考,具体内容如下 需求及效果图: 实现思路: 1.shape实现圆角 在drawable新建两个xml 文件, 这两个 xml文件用shape 实现了圆角效果. Note: 因为要让用户有按下去的效果体验, 所有要有两套圆角图, 在按下去时候切换 <!-- res/drawable/button_shape_normal.xml --> <shape xmlns:android="http://sc

  • Android开发中Button组件的使用

    前言 安卓系统中,Button是程序和用户进行交互的一个重要控件,今天我们就来简单的对Button进行学习,其中Button组件是文本按钮(继承自TextView),而ImageButton是图像按钮(继承自ImageView).两者之间的区别在于: 1.Button即可显示文本也可显示图形(通过设置背景图),而ImageButton只能显示图形不能显示文本: 2.Button可在文本周围区域显示小图,而ImageButton无法在某个区域显示小图: 3.ImageButton上的图像可按比例进

  • Android开发手册RatingBar星级评分控件实例

    目录 实践过程 初识 基本属性 点击事件 自定义样式 实践过程 初识 RatingBar是基于SeekBar和ProgressBar的扩展,用星型来显示等级评定. 通常应用场景是在用户评价那,如淘宝评价,打车订餐评价等等. 使用RatingBar的默认大小时,用户可以触摸/拖动或使用键来设置评分,它有两种样式(小风格用ratingBarStyleSmall,大风格用ratingBarStyleIndicator),其中大的只适合指示,不适合于用户交互. 基本属性 [android:isIndic

  • Android开发手册Chip监听及ChipGroup监听

    目录 Chip监听 ChipGroup监听 实例 效果展示 Chip监听 选中状态的监听:setOnCheckedChangeListener,该监听只有设置了checkable 属性为true或者使用了[filter/entry/choice]这三个style主题的时候才生效. 点击事件的监听:setOnClickListener 关闭按钮被点击的监听:setOnCloseIconClickListener Java myChip.setOnCloseIconClickListener(Vie

  • Android开发手册SeekBar拖动条使用实例

    目录 实践过程 常用属性 基本使用 自定义样式 自定义样式 实践过程 常用属性 因为Seekbar继承自ProgressBar,所以ProgressBar支持的XML属性SeekBar都适用. [android:max="100"]:设置该进度条的最大值[android:progress="50"]:设置该进度条的已完成进度值[android:progressDrawable="@drawable/icon_xinsui"]:自定义drawabl

  • WPF中button按钮同时点击多次触发click解决方法

    解决WPF中button按钮同时点击多次触发click的方法,供大家参考,具体内容如下 DateTime lastClick = DateTime.Now; object obj = new object(); int i = 0; private void Button_Click(object sender, RoutedEventArgs e) { this.IsEnabled = false; var t = (DateTime.Now - lastClick).TotalMillise

  • Android开发实现的文本折叠点击展开功能示例

    本文实例讲述了Android开发实现的文本折叠点击展开功能.分享给大家供大家参考,具体如下: 信息栏,景点介绍,购物信息,进场会使用到文本折叠的方法 实现非常简单,这里就不哆嗦了 效果如下: Demo:https://github.com/LonglyWolf/NavigationSystemHLJU 这里用到了三方类库,在app/gradle添加依赖如下: //文本过长 点击展开全部 implementation 'com.ms-square:expandableTextView:0.1.4'

随机推荐