Android開發(fā)手冊Button按鈕實現(xiàn)點擊音效
前言
大家玩游戲的時候都知道按鈕除了點擊效果還有點擊音效,噗~的一聲,就挺靈性的。
在Unity中實現(xiàn)很簡單,原生的使用Audio Soure,如果你用過FairyGUI甚至不用寫代碼,直接妥妥拽拽可視化就搞定了。
突然有一天小空也想著怎么在APP中實現(xiàn)呢?所以準備封裝一個。
雖然這個功能在實際開發(fā)中并沒有多大卵用。
??實踐過程
好了,既然要實現(xiàn)點擊按鈕有音效,那么我們先準備一個音效,放到【res-raw】文件夾下。
創(chuàng)建個布局
<?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>
創(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是一個封裝音頻各種屬性的方法 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)聽 soundpool.setOnLoadCompleteListener((soundPool, sampleId, status) -> { //加載完畢后再播放 soundpool.play(soundId, 1f, 1f, 0, 0, 1); }); } }
上面play方法共有6個參數(shù) play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
- 參數(shù)soundID:代表聲音文件id;
- 參數(shù)leftVolume、rightVolume:指定左、右的音量:
- 參數(shù)priority:指定播放聲音的優(yōu)先級,數(shù)值越大,優(yōu)先級越高;
- 參數(shù)loop:指定是否循環(huán),0:不循環(huán),-1:循環(huán),其他值表示要重復(fù)播放的次數(shù);
- 參數(shù)rate:指定播放的比率,數(shù)值可從0到2, 1為正常比率。
這只是基本應(yīng)用,有什么的更好的方法呢?
要么寫個單例,全局就有一個,要么創(chuàng)建個自定義的按鈕里面寫邏輯,以后按鈕就用這個自定義的。
那么為什么不用MediaPlayer呢?
MediaPlayer:占用資源較高,不支持同時播放多個音頻。
SoundPool:可以同時播放多個短促的音頻,而且占用的資源較少。適合在程序中播放按鍵音,或者消息提示音等。
結(jié)果
做完之后我突然想起來,手機的設(shè)置里面默認就有點擊聲音的設(shè)置啊。一般在【設(shè)置-聲音和震動-觸摸互動】。
所以,我弄了個寂寞??!
以上就是Android開發(fā)手冊Button按鈕實現(xiàn)點擊音效的詳細內(nèi)容,更多關(guān)于Android開發(fā)Button點擊音效的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android中實現(xiàn)延時執(zhí)行操作的方法小結(jié)
在Android開發(fā)中我們可能會有延時執(zhí)行某個操作的需求,這篇文章主要介紹了Android中實現(xiàn)延時執(zhí)行操作的幾種方法,需要的朋友可以參考下2018-10-10Grow heap (frag case) 堆內(nèi)存過大的深入解析
本篇文章是對Grow heap (frag case) 堆內(nèi)存過大的問題進行了詳細的分析介紹,需要的朋友參考下2013-06-06Android實現(xiàn)Banner界面廣告圖片循環(huán)輪播(包括實現(xiàn)手動滑動循環(huán))
這篇文章主要介紹了Android實現(xiàn)Banner界面廣告圖片循環(huán)輪播(包括實現(xiàn)手動滑動循環(huán))的相關(guān)資料,需要的朋友可以參考下2016-02-02Android中Textview和圖片同行顯示(文字超出用省略號,圖片自動靠右邊)
Android中Textview和圖片同行顯示,文字超出用省略號顯示,圖片自動靠右邊??吹竭@個問題本來認為是一個很正常的需求,看起來很簡單,但是做起來卻遇到了很蛋疼的問題,怎么搞的都不行,堵了很長時間,下面說一下解決的方案,希望遇到這樣問題的朋友可以使用。2016-12-12