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

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

东西/原料

  • Android Studio

结果图

  1. 1

    相信大师都懂一张图胜过千言万语。

  2. 2

    结果和此刻市道上年夜部门播放器差不多,当然若是要运用到贸易项目中,必定还需要进行一些优化,例如:滚动结果有弹性,字体巨细,字体颜色等。

什么是LRC歌词

  1. 1

    LRC是英文Lyric(歌词)的缩写,常用作逐行歌词扩展名。他是纯文本文件,格局简单,能实现歌词逐行滚动;当然今朝业界年夜部门播放器都是在他的根本上心猿意马制了,但根基道理一样,当学完我们这篇文章后,大师也可以按照本身的需求心猿意马制。

LRC歌词格局

  1. 1

    在实现歌词功能前,必定需要搞大白LRC歌词格局,例如:我们找了一段LRC歌词:

  2. 2

    可以看到内容是用换行符朋分的,若是这些数据是经由过程接口返回,而不是直接返回一个LRC文件,那么这里面的换行符应该变为\n换行符,这一点我们也在课程中讲解到了。

    每一行是一句歌词;每一行歌词又分为两部门,中括号里面是当前这行歌词的起头时候,格局为分:秒:毫秒,有些歌词可能没有毫秒,只有秒;歌词开首因为部门数据称为LRC元数据,他是用来描述这个歌词的,部门字段诠释如下:

  3. 3

    前面这些字段按照分歧的播放器可能用的位置纷歧样,我们课程中固然解析了这些字段,但也没有效到。

歌词滚动道理

  1. 1

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

歌词解析

  1. 1

    分歧的说话语法纷歧样,我们这里先说思绪,我们的实现是Java说话。

    读取该文件每一行,然后用]拆分,第二部门就是歌词,第一部门继续用:拆分,然后将三部门转为毫秒;最后将这些信息保留到对象上。

    当然为了今后更好的扩展,因为歌词格局良多,可以进行一些架构:

歌词绘制

  1. 1

    分歧的平台也纷歧样,我们这里是Android,所以绘制用Canvas。我们这里的思绪是:歌词View的高度是固心猿意马的,因为我们但愿当前行歌词始终显示到歌词View中心,所以先算出View的中间高度,然后在该位置绘制当前行歌词,这一步按照分歧的歌词处置的逻辑也纷歧样,但歌词可分为两类,一类是逐行,一类是逐字,对于逐行来说就直接绘制就行了,只是颜色,巨细纷歧样罢了;逐字下一节讲解;然后从当前行歌词位置像前绘制歌词,直到超出View顶部为止,在从当前行歌词标的目的下歌词绘制,直到超出View底部为止;当前你可以利用LinearLayout添加所有歌词当前容器内,然后滚动。

歌词滚动

  1. 1

    Android中分歧的实现方式滚动体例也纷歧样,若是是直接绘制,那么滚动其实就是绘制分歧行歌词,给人的感受就是滚动了;若是是将所有歌词添加到容器中,那么就可以利用容器默认的滚动;对于我们这里的实现滚动其实就是更改lineNumber值,例如;当前lineNumber为5,暗示当前播放的是第5行歌词,经由过程用户滚动的距离就能计较出当前滚动距离是哪一行,因为我们知道每一行高度所以可以计较出当前位置,滚动到的位置,然后利用属性动画滚动:

  2. 2

    到这里LRC歌词View焦点功能根基就实现完当作了,若是要深切进修可以查看我们的【[Android开辟项目实战我的云音乐](http://a.ixuea.com/o)】课程,或者在线电子书【[电子书](http://a.ixuea.com/K)】;同时大师也可以存眷我们的微信公家号【ixuea666】和Android开辟交流QQ群:702321063。

  • 发表于 2018-10-17 00:00
  • 阅读 ( 667 )
  • 分类:其他类型

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
admin
admin

0 篇文章

作家榜 »

  1. xiaonan123 189 文章
  2. 汤依妹儿 97 文章
  3. luogf229 46 文章
  4. jy02406749 45 文章
  5. 小凡 34 文章
  6. Daisy萌 32 文章
  7. 我的QQ3117863681 24 文章
  8. 华志健 23 文章

联系我们:uytrv@hotmail.com 问答工具