Android開(kāi)發(fā)手冊(cè)Button按鈕實(shí)現(xiàn)點(diǎn)擊音效
前言
大家玩游戲的時(shí)候都知道按鈕除了點(diǎn)擊效果還有點(diǎn)擊音效,噗~的一聲,就挺靈性的。
在Unity中實(shí)現(xiàn)很簡(jiǎn)單,原生的使用Audio Soure,如果你用過(guò)FairyGUI甚至不用寫(xiě)代碼,直接妥妥拽拽可視化就搞定了。
突然有一天小空也想著怎么在APP中實(shí)現(xiàn)呢?所以準(zhǔn)備封裝一個(gè)。
雖然這個(gè)功能在實(shí)際開(kāi)發(fā)中并沒(méi)有多大卵用。
??實(shí)踐過(guò)程
好了,既然要實(shí)現(xiàn)點(diǎn)擊按鈕有音效,那么我們先準(zhǔn)備一個(gè)音效,放到【res-raw】文件夾下。
創(chuàng)建個(gè)布局
<?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="點(diǎn)擊音效" />
</LinearLayout>
創(chuàng)建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是一個(gè)封裝音頻各種屬性的方法
AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder();
//設(shè)置音頻流的合適的屬性
attrBuilder.setLegacyStreamType(AudioManager.STREAM_SYSTEM);
soundpool = builder.build();
soundId = soundpool.load(context, R.raw.audio_btn_click, 1);
//是否加載完成的監(jiān)聽(tīng)
soundpool.setOnLoadCompleteListener((soundPool, sampleId, status) -> {
//加載完畢后再播放
soundpool.play(soundId, 1f, 1f, 0, 0, 1);
});
}
}
上面play方法共有6個(gè)參數(shù) play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
- 參數(shù)soundID:代表聲音文件id;
- 參數(shù)leftVolume、rightVolume:指定左、右的音量:
- 參數(shù)priority:指定播放聲音的優(yōu)先級(jí),數(shù)值越大,優(yōu)先級(jí)越高;
- 參數(shù)loop:指定是否循環(huán),0:不循環(huán),-1:循環(huán),其他值表示要重復(fù)播放的次數(shù);
- 參數(shù)rate:指定播放的比率,數(shù)值可從0到2, 1為正常比率。
這只是基本應(yīng)用,有什么的更好的方法呢?
要么寫(xiě)個(gè)單例,全局就有一個(gè),要么創(chuàng)建個(gè)自定義的按鈕里面寫(xiě)邏輯,以后按鈕就用這個(gè)自定義的。
那么為什么不用MediaPlayer呢?
MediaPlayer:占用資源較高,不支持同時(shí)播放多個(gè)音頻。
SoundPool:可以同時(shí)播放多個(gè)短促的音頻,而且占用的資源較少。適合在程序中播放按鍵音,或者消息提示音等。
結(jié)果
做完之后我突然想起來(lái),手機(jī)的設(shè)置里面默認(rèn)就有點(diǎn)擊聲音的設(shè)置啊。一般在【設(shè)置-聲音和震動(dòng)-觸摸互動(dòng)】。

所以,我弄了個(gè)寂寞??!
以上就是Android開(kāi)發(fā)手冊(cè)Button按鈕實(shí)現(xiàn)點(diǎn)擊音效的詳細(xì)內(nèi)容,更多關(guān)于Android開(kāi)發(fā)Button點(diǎn)擊音效的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android使用CardView實(shí)現(xiàn)圓角對(duì)話框
這篇文章主要為大家詳細(xì)介紹了Android使用CardView實(shí)現(xiàn)圓角對(duì)話框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
Android?APP瘦身shrinkResources使用問(wèn)題詳解
這篇文章主要為大家介紹了Android?APP瘦身shrinkResources使用問(wèn)題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Android動(dòng)態(tài)時(shí)鐘壁紙開(kāi)發(fā)
這篇文章主要為大家詳細(xì)介紹了Android動(dòng)態(tài)時(shí)鐘壁紙開(kāi)發(fā)的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Android Studio獲取SHA1值實(shí)例詳解
這篇文章主要介紹了Android Studio獲取SHA1值實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06
Android的WebView與H5前端JS代碼交互的實(shí)例代碼
本篇文章主要介紹了Android的WebView與H5前端JS代碼交互的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-07-07
Android11文件管理權(quán)限申請(qǐng)?jiān)敿?xì)介紹
大家好,本篇文章主要講的是Android11文件管理權(quán)限申請(qǐng)?jiān)敿?xì)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
Android實(shí)現(xiàn)ListView的A-Z字母排序和過(guò)濾搜索功能 實(shí)現(xiàn)漢字轉(zhuǎn)成拼音
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)ListView的A-Z字母排序和過(guò)濾搜索功能,實(shí)現(xiàn)漢字轉(zhuǎn)成拼音功能2017-06-06
Android利用CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)功能 Android實(shí)現(xiàn)停留5s跳轉(zhuǎn)到登錄頁(yè)面
這篇文章主要為大家詳細(xì)介紹了Android利用CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)功能,Android實(shí)現(xiàn)停留5s跳轉(zhuǎn)到登錄頁(yè)面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
去掉activity默認(rèn)動(dòng)畫(huà)效果的簡(jiǎn)單方法
下面小編就為大家?guī)?lái)一篇去掉activity默認(rèn)動(dòng)畫(huà)效果的簡(jiǎn)單方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
Android-Service實(shí)現(xiàn)手機(jī)壁紙自動(dòng)更換
這篇文章主要為大家詳細(xì)介紹了Android-Service實(shí)現(xiàn)手機(jī)壁紙自動(dòng)更換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11

