引言

该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显示效果,其项目地址如下:乐乐音乐播放器。

实现功能

歌词解析和生成

  • 支持krc、ksc、lrc歌词格式

  • hrc歌词:乐乐音乐播放器自定义的动感歌词格式,如需制作歌词(支持动感歌词、翻译歌词和音译歌词制作),可点击链接查看:Hrc歌词制作器(乐乐音乐播放器PC版)

  • 歌词格式可自行扩展和相互转换

双行歌词

  • 不支持lrc格式歌词的显示

  • 支持动感歌词、翻译歌词和音译歌词的显示

  • 歌词颜色渐变方面,主要是参考酷狗PC版桌面歌词的颜色【蓝-白-蓝】

  • 支持歌词字体大小、字体包、颜色、歌词换行等功能

多行歌词

  • 支持lrc、krc和hrc等动感歌词的显示

  • 支持动感歌词、翻译歌词和音译歌词的显示

  • 歌词颜色透明度渐变、歌词平滑移动、歌词快进

  • 支持歌词字体、颜色、歌词换行等功能

  • 动感歌词的翻译歌词,可分为lrc和动感(默认)两种方式绘画显示

预览图

主界面

Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果

歌词文件读取并预览

image

双行歌词-动感歌词

image

双行歌词-音译歌词

image

双行歌词-翻译歌词

wlWCzSr.png

多行歌词-lrc歌词

image

多行歌词-动感歌词

image

多行歌词-音译歌词

image

多行歌词-翻译歌词

image

多行歌词-快进

image

实现思路

歌词解析器和生成器

  • 该项目对支持的krc、ksc、lrc和hrc歌词格式,都封装了两个类,一个类(LyricsFileReader)是用来读取歌词文件并解析歌词内容的,另外一个类(LyricsFileWriter)是用来生成歌词文件,用户可自行扩展歌词格式。

  • 其中,歌词解析和生成只要用了正则表达式和字符串分隔来实现。

  • 关于歌词的格式内容和标签,可点击链接查看,也可以在浏览器上输入关键字“浅谈动感歌词”进行搜索,我之前写了“浅谈动感歌词”系列来简单说明我对动感歌词的一些看法:浅谈动感歌词-歌词分析篇、浅谈动感歌词-歌词生成篇、浅谈动感歌词-歌词解析篇、浅谈动感歌词-歌词显示篇、浅谈动感歌词-歌词补充篇

翻译歌词和音译歌词构建

翻译歌词和音译歌词里的字时间,只要从原始的歌词里面的字时间集合里重构,由于翻译歌词的字数和原始歌词不一定对应,所以翻译歌词每个字的渐变时间,为该行歌词时长除于字总数的平均值。具体可参考:浅谈动感歌词-歌词补充篇

动感歌词渐变效果

API:canvas.clipRect

双行歌词上下颜色渐变

API:LinearGradient,目前设置了上下颜色渐变,颜色是平均分布。

歌词刷新优化

  • 注意:从Handler.postDelayed(Runnable, 0)到Runnable里面的执行是有消耗时间的。

  • 旧版思路:乐乐音乐之前是通过线程每隔100ms便通过发送广播将歌曲的播放进度发给歌词类,让它去刷新歌词的内容,从而达到歌词与歌曲对应的效果,不过这几天优化的时候发现,每隔100ms更新并通过handler进行刷新时,其实还需要考虑handler从发送到执行请求时,所消耗的时间已经不止100ms,加上广播过于频繁,这应该就是乐乐音乐的歌词在渐变的时候不太流畅的原因。

  • 现在思路:乐乐音乐播放器加载完成歌词后,需要从player中将当前歌曲的播放进度(playProgress)传给歌词,之后歌词类便操作这个播放进度值(playProgress)去刷新界面,这里的思路是:每隔1ms,播放进度(playProgress)便要添加1ms。由于handler每次从发送到执行时,需要消耗时间,这里我直接使用该消耗时间作为播放进度的增加值,对歌词界面进行刷新,从而达到歌词与歌曲对应的效果。

  • 个人感觉,如果想歌词更新流畅,用C来实现,效果应该会比较好

  • 类似的,歌曲的进度条显示也可以使用该种方法。

源码

具体的代码和调用Demo,可到源码地址处查看:
Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果

传送门

  • 乐乐音乐播放器-Android

  • Hrc歌词制作器(乐乐音乐播放器PC版)

扩展

  • 歌词格式转换器

  • 歌词文件生成视频

最后

如果有问题,可到github上面留言。

作者:只有一条尾巴的猫
链接:https://www.jianshu.com/p/9e7111db7b41
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果相关推荐

  1. android歌词效果,Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果

    引言 该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显 ...

  2. android仿酷狗界面,Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果

    简介 该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显 ...

  3. android 渐变歌词,Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果

    引言 该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显 ...

  4. Android仿酷狗SlidingMenuLayout界面实现

    引言 该SlidingMenuLayout主要实现了左边侧边栏.主界面和多个Fragment功能.该控件主要是参考酷狗界面的功能,左侧菜单可设置缩放动画,及打开多个Fragment功能.该控件在后期会 ...

  5. 乐乐音乐H5网页版-支持krc歌词(动感歌词、翻译和音译歌词)

    # 简介 # 乐乐音乐H5网页版主要是基于uni-app框架开发的音乐播放器,目前只支持krc歌词(支持歌词颜色.字体大小.歌词进度调整和翻译和音译歌词),不支持歌词快进功能. # 环境配置 #    ...

  6. 乐乐音乐5.0-全面支持翻译和音译歌词

    更新日志 支持翻译歌词和音译歌词 新增歌曲下载功能 图片预览 音译歌词 翻译歌词 简介 乐乐音乐5.0主要是基于ijkplayer框架开发的Android音乐播放器,它支持多种音频格式和动感歌词,界面 ...

  7. Android歌词制作,Android动感歌词制作器(支持翻译和音译歌词)

    引言 之前PC版本已经实现了动感歌词.翻译歌词和音译歌词的制作,便想着找个时间,把PC版本的功能移植到Android手机平台上面.经过一周的努力,终于实现了,界面虽然简陋,但是大部分的功能已经实现.为 ...

  8. Android动感歌词制作器(支持翻译和音译歌词)

    引言 之前PC版本已经实现了动感歌词.翻译歌词和音译歌词的制作,便想着找个时间,把PC版本的功能移植到Android手机平台上面.经过一周的努力,终于实现了,界面虽然简陋,但是大部分的功能已经实现.为 ...

  9. Android仿酷狗音乐自定义侧滑菜单控件简单实现

    随着Android的不断成熟,许多绚丽的效果也在不断的被大家开发出来,其中侧滑的效果用到的项目很多,用的好的更是给吸引了很多用户.国内像QQ和酷狗App的侧滑就很给力,所以查了一些资料,并结合View ...

最新文章

  1. 中国剩余定理与扑克游戏
  2. 输入的命令集锦(补充)
  3. python 抓取“煎蛋妹子图”并分页存在本地(普通版和多线程版)
  4. 2、Flutter 的安装和idea配置
  5. 在Elasticsearch中索引Java Bean的简单方法
  6. maven打包报错You have to use a classifier to attach supplemental artifacts to the project instead of rep
  7. light7在微信ios下input点击困难
  8. 第三章EF的基本使用 EF数据实体模型的更新
  9. asp.net执行js出现“已终止操作”的解决方法
  10. HDX(CITRIX ICA)与ICA
  11. Weblogic 下载
  12. 浅谈端上智能之计算优化
  13. react native 更改app名称和图标
  14. Html中所有的a标签点击打开新的窗口
  15. android实现自动触摸,Android编程开发之多点触摸(Multitouch)实现方法
  16. centos界面的转换+快捷键的使用
  17. 晋商到底是怎么生与死的?
  18. 服务器配置参数主要有哪些
  19. android颜色透明度换算详解
  20. 暴走英雄坛服务器维护,《暴走英雄坛》4月29日更新公告

热门文章

  1. 无人车传感器 IMU与GPS数据融合进行定位机制
  2. 海康工业相机MVS SDK使用云钥科技GigeVision千兆网工业相机
  3. 直播电商软件开发,简单的单例模式
  4. 【Java学习笔记】【基础篇】07.JavaDoc以及两种使用方式
  5. php网站迁移,教你如何利用BT宝塔面板一键迁移网站数据
  6. 关于如何使用Python写一个开机自动认证校园网的脚本程序
  7. 数据采集+数据可视化练习(2022-1-6)
  8. TSlint注释忽略错误和RESTful理解
  9. 【Codeup1928 】日期差值
  10. 用蓝牙耳机播放键激活PC小娜