LRC歌词原理和实现高仿Android网易云音乐

 时间:2024-10-12 13:01:09

大家好,我们是爱学啊,今天给大家带来一篇关于LRC歌词原理和在Android上如何实现歌词逐行滚动的效果,逐字滚动下一篇文章讲解。

工具/原料

Android Studio

效果图

1、相信大家都懂一张图胜过千言万语。

2、效果和现在市面上大部分播放器差不多,当然如果要运用到商业项目中,肯定还需要进行一些优化,例如:滚动效果有弹性,字体大小,字体颜色等。

什么是LRC歌词

1、LRC是英文Lyric(歌词)的缩写,常用作逐行歌词扩展名。他是纯文本文件,格式简单,能实现歌词逐行滚动;当然目前业界大部分播放器都是在他的基础上定制了,但基本原理一样,当学完我们这篇文章后,大家也可以根据自己的需求定制。

LRC歌词格式

1、在实现歌词功能前,肯定需要搞明白LRC歌词格式,例如:我们找了一段LRC歌词:

LRC歌词原理和实现高仿Android网易云音乐

3、前面这些字段根据不同的播放器可能用的位置不一样,我们课程中虽然解析了这些字段,但也没有用到。

歌词滚动原理

1、将每行歌词前面的时间解析后,转为毫秒,这样播放器在播放的时候可以获取到播放时间,然后拿着时间查找当前时间对应哪一行歌词,然后在界面上高亮这一行歌词,或者做更多的处理,例如:字体增大等操作;就实现了歌词逐行高亮;至于滚动不同的平台不一样,滚动思路是:获取到当前时间所对应哪一行,然后我们肯定能算出每一行歌词高度,所以行*每一行高度就是滚动的高度。

歌词解析

1、不同的语言语法不一样,我们这里先说思路,我们的实现是Java语言。读取该文件每一行,然后用]拆分,第二部分就是歌词,第一部分继续用:拆分,然后将三部分转为毫秒;最后将这些信息保存到对象上。当然为了以后更好的扩展,因为歌词格式很多,可以进行一些架构:

LRC歌词原理和实现高仿Android网易云音乐

歌词滚动

1、Android中不同的实现方法滚动方式倦虺赳式也不一样,如果是直接绘制,那么滚动其实就是绘制不同行歌词,给人的感觉就是滚动了;如果是将所有歌词添加到容器中,那么就可以使用容器默认的滚动;对于我们这里的实现滚动其实就是更改lineNumber值,例如;当前lineNumber为5,表示当前播放的是第5行歌词,通过用户滚动的距离就能计算出当前滚动距离是哪一行,因为我们知道每一行高度所以可以计算出当前位置,滚动到的位置,然后使用属性动画滚动:

LRC歌词原理和实现高仿Android网易云音乐

2、到这里LRC歌词View核心功能基本就实现完成了,如果要深入学习可以查看我们的【[Android开发项目实战我的云音乐](http://a.ixuea.com/o)】课程,或者在线电子书【[电子书](http://a.ixuea.com/K)】;同时大家也可以关注我们的微信公众号【ixuea666】和Android开发交流QQ群:702321063。

  • VS2013,VS2015各版本如何打开graphics.h头文件
  • FGO如何刷取狂阶棋子
  • PotPlayer怎样开启使用时间跳移功能
  • 逃出更衣室小游戏攻略
  • pycharm怎么创建git集Create Git repository
  • 热门搜索
    胡萝卜用英语怎么说 大写的一到十怎么写 烧心怎么办 世纪佳缘怎么注销账号 成都到泸沽湖怎么坐车 身份证消磁了怎么办 macan怎么读 泰拉瑞亚怎么钓鱼 产假请假条怎么写 poor怎么读