今天嘗試做一個非常簡單陽春的音樂撥放器。
需要實現的有一個旋轉的動畫、流程條、播放暫停停止按鈕、聲音調整條。
就讓我們來看看怎麼做吧。以下的程式碼都是在 MainActivity 中製作。
lateinit var mediaPlayer: MediaPlayer
// setup mediaPlayer
mediaPlayer = MediaPlayer.create(this, R.raw.hotel)
musicTime = mediaPlayer.duration
// setup up mediaPlayer CompletionListener
mediaPlayer.setOnCompletionListener {
startPauseBtn.text = "START"
progressStatus = 0
musicProgressBar.progress = progressStatus
}
首先,我們自己需要建立一個 raw 的資料夾來放入我們的音樂。
我們實例化 MediaPlayer 透過 create 這個 method 來載入我們的音樂檔。
我們還需要整首音樂的長度來作運用,透過 duration 這個方法可以取得。
再來我們可以看到我們透過 setOnCompletionListener 來讓 Android 播完這首歌後,把所有狀態都初始化。
lateinit var animator: ObjectAnimator
animator = ObjectAnimator.ofFloat(littlebirdImageView, "rotation", 0f, 360f)
animator.repeatCount = -1
animator.duration = 5000
animator.interpolator = LinearInterpolator()
我們先在 MainActivtiy 開始之初就先定義 animator 會是一個 ObjectAnimator 。
並在我們需要的時候初始化。
接下來我們就可以看到我們初始化了我們的 animator 這裡動畫的部份我們就不再多解釋了。
如果需要至知道更多可以到這裡看看。
但我們這裡要特別注意的是我們希望它可以不斷地旋轉,我們就可以運用 repeatCount 來設置。
而且,一開始 Android 所預設的動畫是非線性的動畫,你不特別設置線性動畫的話,會發現動畫要結束前都會變得特別慢。
這樣我們動畫就算設定完成,晚一些就能夠在我們需要的地方使用囉。
private fun progressBar() {
musicProgressBar.max = musicTime
runnable = Runnable {
progressStatus += 1000
musicProgressBar.progress = progressStatus
handler.postDelayed(runnable, 1000)
}
runnable.run()
}
ProgressBar 的部分我們嘗試使用 Runnable 來處理畫面更新的部分。
Thread, Handler, Runnable, 之後將會有專文介紹,今天我們就來看看這要如何使用吧。
我們建立了一個 Runnable 後,裡面會執行 progressbar 累加 1000 並且使用 handler.postDelayed 讓 Runnable 每 1000 毫秒 執行一次。
今天就先到這裡囉,我們明天再把所有的功能組合在一起~~~