private fun checkButtonStatus() {
when (buttonStatus) {
"START" -> {
if (animator.isPaused){
animator.resume()
}else {
animator.start()
}
mediaPlayer.start()
progressBar()
startPauseBtn.text = "PAUSE"
buttonStatus = "PAUSE"
}
"PAUSE" -> {
animator.pause()
mediaPlayer.pause()
handler.removeCallbacksAndMessages(null)
startPauseBtn.text = "START"
buttonStatus = "START"
}
"STOP" -> {
animator.end()
mediaPlayer.pause()
position = 0
mediaPlayer.seekTo(position)
handler.removeCallbacksAndMessages(null)
progressStatus = 0
musicProgressBar.progress = progressStatus
startPauseBtn.text = "START"
buttonStatus = "START"
}
}
}
因為開始與暫停是存在於同一個 Button 裡,所以我們需要寫下一些判斷式。
判斷式的做法有許多種,我們今天的作法是先設定一個 ButtonStatus 來記錄現在使用者的狀態。
經過判斷使用者目前按下的按鈕來做出相對應的動作。
這裡我們先看 START 裡面我們做了些什麼事
我們來從我們會用到的元件來看看,首先是動畫的部分。
我們需要判斷動畫是否為暫停狀態,如果是的話我們會使用 Resume 而不是 Start ,這兩個方法會導致不同效果。
再來是進度條與 MediaPlayer 都要開始運作。
最後,要記得把 Button 畫面跟狀態改成 Pause 。
這樣按下 Start 的同時,同一個按鈕就會轉換成 Pause 模式。
我們再看一下 Stop 的部分,要特別提一下的部分是 MediaPlayer 地方。
讓播放的音樂從頭開始有幾種做法,我們這裡的做法是先暫停音樂然後移動到歌曲 0 毫秒的地方。
下次播放就可以重頭開始了。
我們這裡也可以看到我們針對進度條停止的方式是採用 handler.removeCallbacksAndMessages()
這個方法代表,把 handler 裡面的所有的工作(runnable)移除。也把 ProgressStatus 歸零。
這樣我們就能把這些元件都歸零囉。
把這些東西完成後,我們就可以製作出一個簡單的 MediaPlayer 了。
今天就先這樣,我們明天見~~~