这段时间在写一个音乐播放器,需要显示歌词,下面是我写的一个歌词显示的view。目前它已经可以完成歌词的基本显示,细节地方后期继续完善。
MainActivity从资源文件读入歌词,歌曲,并利用正则表达式解析歌词变为我们想要的格式。解析之后得到两个list: timeList 和 contentList。我们把这两个list传入LrcView中,然后显示。
歌词是下载百度音乐的歌词解析的,我觉得自己写的很麻烦。如果大家有更好的方法可以留言告诉我。下面是歌词的原本格式。
解析之后的格式:
下面是代码部分
1:MainActivity
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MainActivity extends AppCompatActivity {
MediaPlayer mediaPlayer = new MediaPlayer();
private LrcView lrcView = null;
private List<Long> timeList = new ArrayList<>();
private List<String> contentList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InputStream inputStream =getResources().openRawResource(R.raw.apologize);//从资源文件里面得到输入流
AnalyseLyricFile(inputStream);
Log.e("size",""+timeList.size());
mediaPlayer = MediaPlayer.create(this, R.raw.appolo);
lrcView = (LrcView) super.findViewById(R.id.lyric_show);
lrcView.setList(timeList,contentList);
lrcView.init();
new Thread(lrcView).start();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
media