tft每日頭條

 > 科技

 > 網易雲音樂播放器界面設置電腦

網易雲音樂播放器界面設置電腦

科技 更新时间:2025-02-22 20:45:08

此文後續将出配套視頻,星球成員免費觀看

本文将來實現一個音樂播放器,播放File和播放Url實際上是一緻的,我會封裝好所需文件便于你直接閱讀代碼和使用

首先是流程與步驟:

1.啟動服務掃描所有的mp3文件形成播放列表

2.封裝MediaPlayer播放和操作

3.歌曲封面動畫和唱針動畫的邏輯

4.毛玻璃效果和封面

5.歌曲控制 播放/暫停 上一曲/下一曲

我們先來看下效果圖:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)1

文末會有一個Gif效果圖,先說明一下,讀取Sdcard需要權限,這裡就不處理Android6.0的動态權限了,讀者自行處理下,我們先寫一個MusicService來掃描音樂,如下圖代碼:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)2

可以看到,我們的服務并沒有太多的代碼,隻需要啟動一個FixedThreadPool線程池來調用scanMediaData函數掃描内存卡内的mp3,掃描的操作也隻是利用了File的循環遍曆,得到的mp3文件通過MediaMetadataRetriever這個類來解析最終得到歌曲列表的集合:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)3

服務中使用到了EventBus,我對Dialog和EventBus都做了封裝的動作,可以在源碼中查看,我們繼續來看,現在有了數據列表後,我們需要播放對吧,一般歌曲播放都會使用到MediaPlayer這個類,我們封裝一下它:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)4

解釋一下這個封裝的含義,先用單例,然後初始化MediaPlayer後對應的接口方法,這裡使用Handler來實現一個進度的播放,隻要歌曲播放後,每隔1s就去計算當前的進度然後傳遞給調用者,然後就是我們的毛玻璃效果和唱片,唱針的動畫裡,這裡要細講一下,首先是毛玻璃效果,這個效果也是我借鑒别人的代碼的,可以在源碼中查看UtilBitmap這個類來實現,對外的調用如下:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)5

同時設置了中間的封面和背景毛玻璃,每次切換歌曲或者播放的時候調用一下即可,音樂的邏輯還是比較多的,我說的算偏簡單了,我們來看動畫這部分,我使用的是屬性動畫:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)6

這裡你可能有疑問了,為什麼會有三個ObjectAnimator,首先來看第一個circleRotateAnim,看到rotation你就知道這是一個旋轉動畫,從0 - 360說明旋轉一圈,再看他的旋轉模式RESTART,說明是無限循環,也就是無限旋轉了,這很符合唱片的效果,再看下面兩個,實際上就是唱針播放和暫停的兩個狀态,這樣就形成了一個動畫的交互:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)7

最後就是邏輯比較多的控制邏輯了,先看簡單的上一曲/下一曲

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)8

上一曲下一曲隻是加一或者減一隻要不越界就可以了,實際上還是調用了我們的startMusic,這裡的startMusic有兩個方法,一個是根據下标播放的,就用于上下曲,還有一個就是總控制了,也就是直接傳入路徑播放的,用于列表的點擊事件下面,這裡就不過多贅述了,代碼很多都沒貼出來,包括進度的刷新,毫秒的轉換等,這些大家自行去源碼裡查看,我們看下最終形成的效果圖:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)9

此文後續将出配套視頻,星球成員免費觀看

本文将來實現一個音樂播放器,播放File和播放Url實際上是一緻的,我會封裝好所需文件便于你直接閱讀代碼和使用

首先是流程與步驟:

1.啟動服務掃描所有的mp3文件形成播放列表

2.封裝MediaPlayer播放和操作

3.歌曲封面動畫和唱針動畫的邏輯

4.毛玻璃效果和封面

5.歌曲控制 播放/暫停 上一曲/下一曲

我們先來看下效果圖:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)10

文末會有一個Gif效果圖,先說明一下,讀取Sdcard需要權限,這裡就不處理Android6.0的動态權限了,讀者自行處理下,我們先寫一個MusicService來掃描音樂,如下圖代碼:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)11

可以看到,我們的服務并沒有太多的代碼,隻需要啟動一個FixedThreadPool線程池來調用scanMediaData函數掃描内存卡内的mp3,掃描的操作也隻是利用了File的循環遍曆,得到的mp3文件通過MediaMetadataRetriever這個類來解析最終得到歌曲列表的集合:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)12

服務中使用到了EventBus,我對Dialog和EventBus都做了封裝的動作,可以在源碼中查看,我們繼續來看,現在有了數據列表後,我們需要播放對吧,一般歌曲播放都會使用到MediaPlayer這個類,我們封裝一下它:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)13

解釋一下這個封裝的含義,先用單例,然後初始化MediaPlayer後對應的接口方法,這裡使用Handler來實現一個進度的播放,隻要歌曲播放後,每隔1s就去計算當前的進度然後傳遞給調用者,然後就是我們的毛玻璃效果和唱片,唱針的動畫裡,這裡要細講一下,首先是毛玻璃效果,這個效果也是我借鑒别人的代碼的,可以在源碼中查看UtilBitmap這個類來實現,對外的調用如下:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)14

同時設置了中間的封面和背景毛玻璃,每次切換歌曲或者播放的時候調用一下即可,音樂的邏輯還是比較多的,我說的算偏簡單了,我們來看動畫這部分,我使用的是屬性動畫:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)15

這裡你可能有疑問了,為什麼會有三個ObjectAnimator,首先來看第一個circleRotateAnim,看到rotation你就知道這是一個旋轉動畫,從0 - 360說明旋轉一圈,再看他的旋轉模式RESTART,說明是無限循環,也就是無限旋轉了,這很符合唱片的效果,再看下面兩個,實際上就是唱針播放和暫停的兩個狀态,這樣就形成了一個動畫的交互:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)16

最後就是邏輯比較多的控制邏輯了,先看簡單的上一曲/下一曲

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)17

上一曲下一曲隻是加一或者減一隻要不越界就可以了,實際上還是調用了我們的startMusic,這裡的startMusic有兩個方法,一個是根據下标播放的,就用于上下曲,還有一個就是總控制了,也就是直接傳入路徑播放的,用于列表的點擊事件下面,這裡就不過多贅述了,代碼很多都沒貼出來,包括進度的刷新,毫秒的轉換等,這些大家自行去源碼裡查看,我們看下最終形成的效果圖:

網易雲音樂播放器界面設置電腦(封裝MediaPlayer實現網易雲音樂播放器)18

對Android感興趣的可以關注我的公衆号【劉桂林】

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved