把背景音樂控制條改成「Spotify風格」的底部播放器(Dock)。
以前那條會蓋在內容上,現在變成固定在底部,不擋畫面,隨時操作。

位置與版面
原本控制條固定在上方,手機上很容易壓到內容。
現在改放在底部,主要內容區自動預留一點空間,不會被播放器吃掉。
用了半透明的深色底+模糊效果,看起來像一層玻璃。
Dock結構(三個區塊)
-
左側:小方塊封面(用曲目 id 自動產生漸層+首字母)、曲名、描述,右邊一顆綠色小圈代表「播放中」。
-
中間:速度選擇(目前只是裝飾)、倒轉、上一首、播放、下一首、快轉、睡眠定時等圖示。
只有播放/暫停能用,其他先灰掉加上提示文字。
下方是一條進度條+左右兩邊的時間。
-
右側:播放清單、裝置切換、全螢幕等圖示(先預留)。
音量控制區用一條漸層條+百分比顯示。
互動
- 播放鍵改成只有圖示,外圈有亮色漸層和微縮放的按壓效果。
- 音量條用綠色漸層表示音量高低,支援滑動和鍵盤操作。
- 進度條以 1000 個刻度映射播放位置,拖曳時先在前端預覽,放開才真的跳轉。
如果是直播或沒有長度的串流,就會顯示「LIVE」並關掉進度條。
- 沒有封面的曲目會用曲目 id 產生一組獨特的漸層+首字母作為替代。
播放狀態與時間處理
useBgm
新增了 currentTime
和 duration
,
透過一系列事件(timeupdate
、loadedmetadata
、durationchange
、ended
)即時更新畫面。
加上 seekTo(seconds)
函式,能安全跳轉指定秒數。
播放、暫停或換歌時,所有數值都會重新同步,避免顯示錯誤的時間。