引言

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

实现功能

歌词解析和生成支持krc、ksc、lrc歌词格式

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

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

双行歌词不支持lrc格式歌词的显示

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

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

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

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

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

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

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

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

预览图

主界面

歌词文件读取并预览

双行歌词-动感歌词

双行歌词-音译歌词

双行歌词-翻译歌词

多行歌词-lrc歌词

多行歌词-动感歌词

多行歌词-音译歌词

多行歌词-翻译歌词

多行歌词-快进

实现思路

歌词解析器和生成器该项目对支持的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来实现,效果应该会比较好

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

源码

传送门

扩展歌词格式转换器

歌词文件生成视频

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. java仿酷狗音乐源码_【附项目源码】仿酷狗音乐客户端,浅淡动感歌词补充

    原标题:[附项目源码]仿酷狗音乐客户端,浅淡动感歌词补充 1.前言 之前写了几篇关于动感歌词的简单介绍,相信大家还有印象,这里就不多说了,这篇要说的是,关于翻译歌词和音译歌词,以及我在解析和显示这两种 ...

  8. android高仿酷狗音乐播放器源码下载

    这是一款简单的读取SD卡音乐文件进行播放.暂停.删除.切歌等功能的高仿酷狗音乐播放器. 主要功能: 模块 简要说明 扫描SD卡音乐 扫描SD卡,并显示出本地音乐列表 提供歌词跟随音乐滚动更能   采用 ...

  9. Android插件化开发指南——实践之仿酷狗音乐首页

    文章目录 1. 前言 2. 布局分析 3. 底部导航栏的实现 4. 顶部导航栏和ViewPager+Fragment的关联 1. 前言 在Android插件化开发指南--2.15 实现一个音乐播放器A ...

最新文章

  1. OC封装的轮播图-只用调用即可
  2. 浅谈Django的中间件与Python的装饰器
  3. 《云计算:概念、技术与架构》一2.3 案例研究3:Innovartus
  4. apache kafka技术分享系列(目录索引)--转载
  5. (转载)java语言对时间的处理
  6. 事件总线(Event Bus)知多少
  7. 公开发布版的Windows Azure 基础结构服务中的 SQL Server – 文档和最佳实践(已更新),还有即将发布的博客...
  8. Java线程Fork/Join思想及实现
  9. [14-01] 闭包
  10. 九九乘法表 利用for语句
  11. 【数据结构笔记】二叉搜索树及其相关算法
  12. Linux查看网卡是千兆还是万兆网卡
  13. 恒德室内智能照明控制系统电路设计
  14. 分类,等级,或者有序变量如何进行多因素Cox回归 变量的类型决定了最终结果的reference
  15. python:打飞机游戏
  16. laravel安装barryvdh/laravel-snappy 笔记
  17. 计算机考试贷款日到期日,怎么样用金融计算器算利率和期限
  18. mysql错误:ERROR 145 (HY000): Table './zentao/zt_action' is marked as crashed and should be repaired
  19. js绘制的漂亮玫瑰曲线rose curve
  20. MTK平台 获取本机的SIM卡中IMSI号

热门文章

  1. 和我一起写lua - 确认操作系统
  2. 计算机会计期末试题及答案,会计电算化模拟试题及答案
  3. 【MATLAB教程案例16】基于GWO灰狼优化算法的函数极值计算matlab仿真及其他应用
  4. ASO优化常见的问题精选之ASO指数是什么?
  5. 怎样在html中显示IP地址,如何通过ip查经纬度
  6. 推荐几款公众号写作必备工具
  7. 【车载以太网】【测试】架构及测试工具
  8. 语义分割评价指标mIOU
  9. Mac 上 vscode 的 rust-analyzer 扩展无法追踪/跟踪方法定义
  10. 空间两条直线段的最短距离及最近点计算