91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Android的Button按鈕實現點擊音效

發布時間:2022-06-13 11:35:42 來源:億速云 閱讀:222 作者:zzz 欄目:開發技術

今天小編給大家分享一下怎么用Android的Button按鈕實現點擊音效的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

實踐過程

先準備一個音效,放到【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按鈕實現點擊音效”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石台县| 正安县| 高州市| 雷山县| 佛教| 怀集县| 孟州市| 五大连池市| 鸡东县| 达拉特旗| 北海市| 新干县| 谢通门县| 弋阳县| 柯坪县| 铜鼓县| 沙湾县| 乾安县| 丹巴县| 吴桥县| 德安县| 桂林市| 元谋县| 观塘区| 微博| 山西省| 呼伦贝尔市| 永兴县| 绥芬河市| 安新县| 米脂县| 雷波县| 独山县| 永春县| 永靖县| 海南省| 望都县| 雷州市| 和田市| 乐安县| 巧家县|