LRC歌詞原理和實現高仿Android網易云音樂

大師好, 我們是愛學啊, 今天給大師帶來一篇關于LRC歌詞道理和在Android上若何實現歌詞逐行滾動的結果, 逐字滾動下一篇文章講解 。

需要這些哦
Android Studio
結果圖1相信大師都懂一張圖勝過千言萬語 。

LRC歌詞原理和實現高仿Android網易云音樂



2結果和此刻市道上年夜部門播放器差不多, 當然若是要運用到貿易項目中, 必定還需要進行一些優化, 例如:滾動結果有彈性, 字體大小, 字體顏色等 。

什么是LRC歌詞1LRC是英文Lyric(歌詞)的縮寫, 常用作逐行歌詞擴展名 。 他是純文本文件, 格局簡單, 能實現歌詞逐行滾動;當然今朝業界年夜部門播放器都是在他的根本上定制了, 但根基道理一樣, 當學完我們這篇文章后, 大師也可以按照本身的需求定制 。

LRC歌詞格局1在實現歌詞功能前, 必定需要搞大白LRC歌詞格局, 例如:我們找了一段LRC歌詞:

LRC歌詞原理和實現高仿Android網易云音樂



2可以看到內容是用換行符朋分的, 若是這些數據是經由過程接口返回, 而不是直接返回一個LRC文件, 那么這里面的換行符應該變為\n換行符, 這一點我們也在課程中講解到了 。
每一行是一句歌詞;每一行歌詞又分為兩部門, 中括號里面是當前這行歌詞的起頭時候, 格局為分:秒:毫秒, 有些歌詞可能沒有毫秒, 只有秒;歌詞開首因為部門數據稱為LRC元數據, 他是用來描述這個歌詞的, 部門字段詮釋如下:

LRC歌詞原理和實現高仿Android網易云音樂



3前面這些字段按照分歧的播放器可能用的位置紛歧樣, 我們課程中固然解析了這些字段, 但也沒有效到 。

歌詞滾動道理1將每行歌詞前面的時候解析后, 轉為毫秒, 如許播放器在播放的時辰可以獲取到播放時候, 然后拿著時候查找當前時候對應哪一行歌詞, 然后在界面上高亮這一行歌詞, 或者做更多的處置, 例如:字體增年夜等操作;就實現了歌詞逐行高亮;至于滾動分歧的平臺紛歧樣, 滾動思緒是:獲取到當前時候所對應哪一行, 然后我們必定能算出每一行歌詞高度, 所以行*每一行高度就是滾動的高度 。

歌詞解析1分歧的說話語法紛歧樣, 我們這里先說思緒, 我們的實現是Java說話 。
讀取該文件每一行, 然后用]拆分, 第二部門就是歌詞, 第一部門繼續用:拆分, 然后將三部門轉為毫秒;最后將這些信息保留到對象上 。
當然為了今后更好的擴展, 因為歌詞格局良多, 可以進行一些架構:

LRC歌詞原理和實現高仿Android網易云音樂



歌詞繪制1分歧的平臺也紛歧樣, 我們這里是Android, 所以繪制用Canvas 。 我們這里的思緒是:歌詞View的高度是固定的, 因為我們但愿當前行歌詞始終顯示到歌詞View中心, 所以先算出View的中間高度, 然后在該位置繪制當前行歌詞, 這一步按照分歧的歌詞處置的邏輯也紛歧樣, 但歌詞可分為兩類, 一類是逐行, 一類是逐字, 對于逐行來說就直接繪制就行了, 只是顏色, 大小紛歧樣罷了;逐字下一節講解;然后從當前行歌詞位置像前繪制歌詞, 直到超出View頂部為止, 在從當前行歌詞標的目的下歌詞繪制, 直到超出View底部為止;當前你可以利用LinearLayout添加所有歌詞當前容器內, 然后滾動 。

猜你喜歡