大师好, 我们是爱学啊, 今天给大师带来一篇关于LRC歌词道理和在Android上若何实现歌词逐行滚动的结果, 逐字滚动下一篇文章讲解 。
需要这些哦
Android Studio
结果图1相信大师都懂一张图胜过千言万语 。
文章插图
2结果和此刻市道上年夜部门播放器差不多, 当然若是要运用到贸易项目中, 必定还需要进行一些优化, 例如:滚动结果有弹性, 字体大小, 字体颜色等 。
什么是LRC歌词1LRC是英文Lyric(歌词)的缩写, 常用作逐行歌词扩展名 。 他是纯文本文件, 格局简单, 能实现歌词逐行滚动;当然今朝业界年夜部门播放器都是在他的根本上定制了, 但根基道理一样, 当学完我们这篇文章后, 大师也可以按照本身的需求定制 。
LRC歌词格局1在实现歌词功能前, 必定需要搞大白LRC歌词格局, 例如:我们找了一段LRC歌词:
文章插图
2可以看到内容是用换行符朋分的, 若是这些数据是经由过程接口返回, 而不是直接返回一个LRC文件, 那么这里面的换行符应该变为\n换行符, 这一点我们也在课程中讲解到了 。
每一行是一句歌词;每一行歌词又分为两部门, 中括号里面是当前这行歌词的起头时候, 格局为分:秒:毫秒, 有些歌词可能没有毫秒, 只有秒;歌词开首因为部门数据称为LRC元数据, 他是用来描述这个歌词的, 部门字段诠释如下:
文章插图
3前面这些字段按照分歧的播放器可能用的位置纷歧样, 我们课程中固然解析了这些字段, 但也没有效到 。
歌词滚动道理1将每行歌词前面的时候解析后, 转为毫秒, 如许播放器在播放的时辰可以获取到播放时候, 然后拿着时候查找当前时候对应哪一行歌词, 然后在界面上高亮这一行歌词, 或者做更多的处置, 例如:字体增年夜等操作;就实现了歌词逐行高亮;至于滚动分歧的平台纷歧样, 滚动思绪是:获取到当前时候所对应哪一行, 然后我们必定能算出每一行歌词高度, 所以行*每一行高度就是滚动的高度 。
歌词解析1分歧的说话语法纷歧样, 我们这里先说思绪, 我们的实现是Java说话 。
读取该文件每一行, 然后用]拆分, 第二部门就是歌词, 第一部门继续用:拆分, 然后将三部门转为毫秒;最后将这些信息保留到对象上 。
当然为了今后更好的扩展, 因为歌词格局良多, 可以进行一些架构:
文章插图
歌词绘制1分歧的平台也纷歧样, 我们这里是Android, 所以绘制用Canvas 。 我们这里的思绪是:歌词View的高度是固定的, 因为我们但愿当前行歌词始终显示到歌词View中心, 所以先算出View的中间高度, 然后在该位置绘制当前行歌词, 这一步按照分歧的歌词处置的逻辑也纷歧样, 但歌词可分为两类, 一类是逐行, 一类是逐字, 对于逐行来说就直接绘制就行了, 只是颜色, 大小纷歧样罢了;逐字下一节讲解;然后从当前行歌词位置像前绘制歌词, 直到超出View顶部为止, 在从当前行歌词标的目的下歌词绘制, 直到超出View底部为止;当前你可以利用LinearLayout添加所有歌词当前容器内, 然后滚动 。
推荐阅读
- 网易云音乐如何更改歌词颜色
- 洗洁精毒死老鼠的原理 洗洁精毒死老鼠的原理是什么
- 如何设置QQ音乐锁屏歌词
- 物体旋转的原理是什么 物体旋转的原理是什么意思
- 手机QQ音乐听歌时怎么在屏幕上显示歌词
- 盐水煮木头防裂原理 为什么盐水煮木头防裂
- 网银云音乐怎么显示歌词
- 微波炉加热原理 微波炉是怎样把食物加热的
- 海阔天空歌词 海阔天空的歌词
- 纸花在水中开花的原理 纸花在水中开花的原理是什么