android编程实例-音乐播放器之歌词显示

本文介绍了如何在Android应用中实现音乐播放器的歌词显示功能,通过解析歌词文件,利用TextView动态更新歌词内容,为用户提供同步滚动的歌词体验。详细讲解了项目实战过程和技术要点。
摘要由CSDN通过智能技术生成

        今天分享一个歌词显示的项目,首先让我们来看看一般歌词是什么样的格式,就拿神曲《小苹果》来说的,请看歌词:

[00:00.91]小苹果
[00:01.75]作词:王太利 作曲:王太利
[00:02.47]演唱:筷子兄弟
[00:03.32]
[00:17.40]我种下一颗种子
[00:19.12]终于长出了果实
[00:21.04]今天是个伟大日子
[00:25.10]摘下星星送给你
[00:26.79]拽下月亮送给你
[00:28.77]让太阳每天为你升起
[00:31.25]
[00:32.67]变成蜡烛燃烧自己
[00:34.47]只为照亮你
[00:36.44]把我一切都献给你
[00:38.22]只要你欢喜
[00:40.19]你让我每个明天都
[00:42.15]变得有意义
[00:44.04]生命虽短爱你永远
[00:46.08]不离不弃
[00:47.81]
[00:48.15]你是我的小呀小苹果儿
[00:51.92]怎么爱你都不嫌多
[00:55.26]红红的小脸儿温暖我的心窝
[00:59.33]点亮我生命的火  火火火火
[01:03.45]你是我的小呀小苹果儿
[01:07.06]就像天边最美的云朵
[01:10.61]春天又来到了花开满山坡
[01:14.70]种下希望就会收获

新建一个java类Lyrc来表示歌词

public class Lyrc {
	public String lrcString;    //歌词
	public int sleepTime;     //一行歌词的持续时间
	public int timePoint;      //一行歌词结束的时间点
}

新建java类对歌词进行处理,歌词中一行里有时间[00:48.15],用[ ]括起来,紧接着是歌词内容,我们一行一行的将歌词读入,并将时间和歌词分离。

public class LyrcUtil {
	private static List<Lyrc> lyrcList;
	/**
	 * 读取歌词文件文件
	 * @param f
	 * @return
	 */
	public static List<Lyrc> readLRC(File f) {
		try {
			if (f == null || !f.exists()) {
				lyrcList = null;
			} else {
				lyrcList = new Vector<Lyrc>();
				InputStream is = new BufferedInputStream(new FileInputStream(f));
				BufferedReader br = new BufferedReader(new InputStreamReader(is, getCharset(f)));
				String strTemp = "";
				while ((strTemp = br.readLine()) != null) {
					strTemp = analyzeLRC(strTemp);
				}
				br.close();
				is.close();
				// 对歌词进行排序
				Collections.sort(lyrcList, new Sort());
				// 计算每行歌词的停留时间
				for (int i = 0; i < lyrcList.size(); i++) {

					Lyrc one = lyrcList.get(i);
					if (i + 1 < lyrcList.size()) {
						Lyrc two = lyrcList.get(i + 1);
						one.sleepTime = two.timePoint - one.timePoint;
					}
				
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值