2011-05-13 49 views
0

當我點擊某個視圖時,我想播放旋律。問題在於,當我點擊得非常快時,旋律從一開始就開始,我希望它播放到最後,並且此時屏幕不會對點擊作出反應(因爲我不希望旋律被播放10次我點擊非常快10倍)。我寫的是這樣的:點擊播放旋律

MediaPlayer mp = MediaPlayer.create(MyActivity.this, R.raw.cow_moo); mp.start(); if(mp.isPlaying()) { img1.setClickable(false); } img1.setClickable(true);

但是經過點擊屏幕沒有反應過來點擊了......請幫助我與此有關。

回答

1
//Init your MediaPlayer when Activity is created, for instance: 
MediaPlayer mp = MediaPlayer.create(MyActivity.this, R.raw.cow_moo); 
//**************************// 

//onClickListener goes here: 

if(mp.isPlaying()){ 
    //do nothing 
}else{ 
    mp.start(); 
} 

//onClickListener ends here: 
+0

令人難以置信!這種簡單的解決方案,它的工作原理非常棒!謝謝! – lomza 2011-05-13 09:28:12

1

閱讀android developers guide,它說:「如果你想在以後重放媒體,那麼你就必須重置(),並再次調用start之前準備()的MediaPlayer對象()」

+0

我真的沒有時間閱讀所有這些材料,我不確定它如何幫助我解決我的問題。 – lomza 2011-05-13 07:45:59

+0

我已經提到了文章中最重要的部分:要再次播放某些內容,必須在再次調用start()之前調用reset()和prepare()。除非每次用戶單擊按鈕時都要創建一個新的MediaPlayer,這會浪費資源。 – THelper 2011-05-13 08:00:23

+0

好的,首先我會重構我的所有代碼並嘗試這樣做。我會寫什麼我後來才;像你說的') – lomza 2011-05-13 08:23:31