HPLyrics

Introduction: Android 仿酷狗动感歌词(支持翻译和音译歌词)显示效果,支持 lrc 歌词、ksc 歌词、krc 歌词、trc 歌词、网易云 API 歌词和 hrc 歌词等歌词格式的显示,支持动感歌词制作。
More: Author   ReportBugs   
Tags:

该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显示效果,注:其默认歌词格式的编码都是 utf-8,使用过程中请注意编码一致的问题,其项目地址如下:乐乐音乐播放器

使用注意

  • 1.x 版本,只要是使用自定义 view 来实现,每次都使用 handler 去刷新 view,但是如果 handler 队列中有很多任务执行,那就无法保证歌词每次都在 100ms 内刷新一次。
  • 2.x 版本,主要是使用 surfaceview 来实现,每次刷新时间为 40ms,歌词渐变相对会流畅。
  • 3.x 版本,主要是使用 TextureView 来实现,每次刷新时间修改为 50ms,TextureView 支持 view 的相关动画属性

2.x 版本使用注意

  • 主题:我主要是使用 Theme.AppCompat.Light.NoActionBar 的主题,我试过其它的主题,会导致 surfaceview 背景为黑色,并且不能透明的问题。
  • surfaceview 存在的问题,没有 view 相关的旋转,位移等动画和 touch 事件,所以我乐乐音乐的旋转界面会出现问题,如果有相关动画需求的,慎用。

3.x 版本使用注意

  • 设置硬件加速:android:hardwareAccelerated="true"
  • android4.0 以上
  • 存在的问题,没有 touch 事件

网易云 API 歌词调用方式

注:该歌词只适用于通过 api 获取歌词,文件保存格式为:lrcwy。其中动感歌词和 lrc 歌词只能选其中一种,支持翻译歌词,

日志

2020-04-05

  • 添加 setRefreshTime 接口来设置动感歌词行歌词中字刷新时间
  • 添加 setDuration 接口来设置多行歌词 y 轴的移动时间

2020-02-26

  • 添加 trc 歌词支持

2019-01-18

  • 添加读取歌词 api 接口

2018-12-30

  • 修复制作歌词问题,添加多行歌词指示器回调接口

2018-12-29

  • 添加制作歌词功能
  • 添加网易云 API 歌词支持
  • 修复网易云 API 歌词支持、翻译歌词支持高亮显示、修复歌词上滑动时有时不绘画的问题

v3.2

  • 2018-05-05
  • 添加混淆
  • 添加刷新时间

v3.0

  • 2018-04-22
  • surfaceview 替换成 TextureView

v2.6

  • 2018-04-22
  • 修复后台回到前台时,歌词视图内容为空的问题
  • 修复初始歌词数据时,OffsetY 值没还原的问题

v2.4

  • 2018-04-21
  • 自定义 view 替换成 surfaceview
  • 添加获取歌词参数方法

v1.46

  • 2018-10-02
  • 获取歌词最大的宽度默认为获取屏幕的大小的 2/3。
  • 考虑到在设置歌词数据时,视图并没有显示,导致歌词的最大宽度获取为 0,所以分隔歌词时出现了问题,最终出现竖直歌词的问题。

v1.44

  • 2018-08-11
  • 添加 HandlerThread
  • 修复歌词类型切换

v1.40

  • 2018-06-02
  • minSdkVersion 修改为 19

v1.36

  • 2018-05-12
  • 双行歌词的默认歌词添加居左显示和居中显示模式
  • 双行歌词不回手动设置字体大小标记

v1.34

  • 2018-05-07
  • 修复歌词快进点击按钮事件
  • 2018-05-06
  • 修复自定义 view 歌词

v1.x

  • 修复制作歌词无法完成的问题
  • 修改音译歌词显示
  • 添加制作音译歌词实体
  • 修改制作翻译歌词实体
  • 添加制作翻译歌词实体
  • 添加修改绘画指示器颜色接口
  • 修复制作歌词问题
  • LyricsReader 添加设置歌词数据
  • 添加制作歌词实体
  • 添加获取制作歌词状态接口
  • 添加获取制作后的歌词接口
  • 添加制作歌词预览视图
  • 添加额外歌词生成图片视图预览和生成额外歌词图片功能
  • 修复歌词生成图片问题
  • 修复歌词生成图片问题
  • 修复歌词生成图片视图的字体
  • 修改部分 int 变量的类型为 long
  • 修改部分 int 变量的类型为 float
  • 添加歌词生成图片文件接口
  • 添加歌词生成图片预览视图
  • 修复通过歌曲文件名获取歌词文件问题
  • 修复多行歌词未读时渐变的问题
  • 修复最后一个字渐变出错的问题
  • 修改歌词每次刷新的间隔最少为 100ms
  • 修改歌词每次刷新的间隔最少为 20ms
  • 修复未读到下一行歌词时,上一行歌词渐变宽度为 0 的问题
  • 修复设置歌词读取器的问题
  • 2018-03-04
  • 修复双行歌词加载歌词完成后,显示额外歌词渐变出错的问题
  • 修改了多行歌词,滑动时的指示器渐变颜色

    v1.2

  • 添加歌词 view 获取歌词读取器方法

    v1.1

  • 添加歌词读取器获取歌词实体类方法

    v1.0

  • 实现 lrc、ksc、krc 和 hrc 歌词格式的显示

  • 实现双多行歌词的显示、字体大小、颜色、歌词换行
  • 多行歌词的快进、平滑移动、颜色渐变

预览图

制作歌词界面

主界面

歌词文件读取并预览

双行歌词-动感歌词

双行歌词-音译歌词

双行歌词-翻译歌词

多行歌词-lrc 歌词

多行歌词-动感歌词

多行歌词-音译歌词

多行歌词-翻译歌词

多行歌词-快进

Gradle

1.root build.gradle

`allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}`

2.app build.gradle

dependencies { compile 'com.github.zhangliangming:HPLyrics:v1.66' }

混淆注意

-keep class com.zlm.hp.lyrics.* { ; }

调用 Demo

链接: https://pan.baidu.com/s/1j-4wbtiNIfRhypb4uEnX6g 提取码: t8dj

调用用法

部分 API

  • setPaintColor:设置默认画笔颜色
  • setPaintHLColor:设置高亮画笔颜色
  • setExtraLyricsListener:设置额外歌词回调方法,多用于加载歌词完成后,根据额外歌词的状态来判断是否需要显示翻译、音译歌词按钮
  • setSearchLyricsListener:无歌词时,搜索歌词接口
  • setOnLrcClickListener:多行歌词中歌词快进时,点击播放按钮时,调用。
  • setFontSize:设置默认画笔的字体大小,可根据参数来设置是否要刷新 view
  • setExtraLrcStatus:设置额外歌词状态
  • setLyricsReader:设置歌词读取器
  • play:设置歌词当前的播放进度(播放歌曲时调用一次即可)
  • pause:暂停歌词
  • seekto:快进歌词
  • resume:唤醒
  • initLrcData:初始化歌词内容
  • setTranslateDrawLrcColorType:设置翻译歌词绘画颜色类型
  • setTranslateDrawType:设置翻译歌词绘画类型

声明

由于该项目涉及到酷狗的动感歌词的版权问题,所以该项目的代码和内容仅用于学习用途

捐赠

如果该项目对您有所帮助,欢迎您的赞赏

  • 微信

  • 支付宝

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools