Skip to content

Commit 67a5bad

Browse files
author
hzwangchenyan
committed
异步加载歌词
1 parent 7114a16 commit 67a5bad

File tree

1 file changed

+40
-8
lines changed

1 file changed

+40
-8
lines changed

lrcview/src/main/java/me/wcy/lrcview/LrcView.java

+40-8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.content.res.TypedArray;
77
import android.graphics.Canvas;
88
import android.graphics.Paint;
9+
import android.os.AsyncTask;
910
import android.text.Layout;
1011
import android.text.StaticLayout;
1112
import android.text.TextPaint;
@@ -164,24 +165,54 @@ public void setLabel(String label) {
164165
*
165166
* @param lrcFile 歌词文件
166167
*/
167-
public void loadLrc(File lrcFile) {
168-
List<LrcEntry> entryList = LrcEntry.parseLrc(lrcFile);
169-
onLrcLoaded(entryList);
168+
public void loadLrc(final File lrcFile) {
169+
reset();
170+
171+
setTag(lrcFile);
172+
AsyncTask<File, Integer, List<LrcEntry>> loadLrcTask = new AsyncTask<File, Integer, List<LrcEntry>>() {
173+
@Override
174+
protected List<LrcEntry> doInBackground(File... params) {
175+
return LrcEntry.parseLrc(params[0]);
176+
}
177+
178+
@Override
179+
protected void onPostExecute(List<LrcEntry> lrcEntries) {
180+
if (getTag() == lrcFile) {
181+
onLrcLoaded(lrcEntries);
182+
setTag(null);
183+
}
184+
}
185+
};
186+
loadLrcTask.execute(lrcFile);
170187
}
171188

172189
/**
173190
* 加载歌词文件
174191
*
175192
* @param lrcText 歌词文本
176193
*/
177-
public void loadLrc(String lrcText) {
178-
List<LrcEntry> entryList = LrcEntry.parseLrc(lrcText);
179-
onLrcLoaded(entryList);
194+
public void loadLrc(final String lrcText) {
195+
reset();
196+
197+
setTag(lrcText);
198+
AsyncTask<String, Integer, List<LrcEntry>> loadLrcTask = new AsyncTask<String, Integer, List<LrcEntry>>() {
199+
@Override
200+
protected List<LrcEntry> doInBackground(String... params) {
201+
return LrcEntry.parseLrc(params[0]);
202+
}
203+
204+
@Override
205+
protected void onPostExecute(List<LrcEntry> lrcEntries) {
206+
if (getTag() == lrcText) {
207+
onLrcLoaded(lrcEntries);
208+
setTag(null);
209+
}
210+
}
211+
};
212+
loadLrcTask.execute(lrcText);
180213
}
181214

182215
private void onLrcLoaded(List<LrcEntry> entryList) {
183-
reset();
184-
185216
if (entryList != null && !entryList.isEmpty()) {
186217
mLrcEntryList.addAll(entryList);
187218
}
@@ -256,6 +287,7 @@ private void reset() {
256287
mNextTime = 0L;
257288

258289
stopAnimation();
290+
postInvalidate();
259291
}
260292

261293
private void initEntryList() {

0 commit comments

Comments
 (0)