lrc歌詞解析(正則表示式)與歌詞卡拉ok顯示的思路
阿新 • • 發佈:2019-01-10
(2):安排一個動作在不同的執行緒中執行。在播放的同時,負責重新整理歌詞資訊,由於歌詞資訊時間點不連續,不可能將取得的歌曲時間play.getCurrentPosition()點去取得相應的歌詞資訊。所以只能去估計,遍歷所有歌詞時間點,當時間有大於play.getCurrentPosition(),就停止遍歷,可想而知,既然記錄時間點大了,證明現在播放的是該記錄點的前一個。所以返回該位置,然後通過該位置,去重新整理要顯示的歌詞陣列,然後將歌詞顯示出來,在程式設計之前,規定陣列第幾個為當前播放的歌詞,然後按照這個規定填充陣列。顯示的時候也按照這個規定顯示。這樣就實現了歌詞同步。但是我們還不滿足,我們要實現卡拉ok的歌詞漸變功,Shader
shader = new LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, TileMode tile);
paint.setShader(shader);
這個類就能實現字型的漸變過程,x0,y0表示起始的位置,x1,y1,表示終點。這裡歌詞要橫向過去的,所以我們設定
x0=0,y0=0,y1=0,x1等於字元的 長度。Colors這裡要設定顏色值,第1位置表示漸變的開始顏色,第2位置就是終點顏色,positions設定的位置值比例,1表示全部,也是要設定兩個值,分別表示起始顏色的位置,終點顏色的位置,後面是型別。
paint.setShader(shader);
這個類就能實現字型的漸變過程,x0,y0表示起始的位置,x1,y1,表示終點。這裡歌詞要橫向過去的,所以我們設定
x0=0,y0=0,y1=0,x1等於字元的 長度。Colors這裡要設定顏色值,第1位置表示漸變的開始顏色,第2位置就是終點顏色,positions設定的位置值比例,1表示全部,也是要設定兩個值,分別表示起始顏色的位置,終點顏色的位置,後面是型別。