逐词/逐字歌词的 YRC·LRC·TTML 三种格式与偏移调节完整说明
格式支持
| 格式 | 精度 | 典型来源 |
|---|---|---|
| LRC | 逐行时间戳 | 网易云、LRCLIB |
| YRC | 逐词/逐字时间戳(含方括号) | 网易云逐字歌词 |
| TTML | 逐字时间戳(XML) | Bilibili、YouTube Music |
逐字歌词优先但不隐藏普通歌词,当源只提供 LRC 时退化为逐行高亮。
逐词高亮实现
SyncedLyricsView 和 AdvancedLyricsView 两个 Compose 组件负责歌词渲染:
- AppleMusicLyric 组件:逐行/逐词/逐字高亮动画,当前行居上
- 点击跳转:点击任意时间点的歌词行可直接跳到对应播放位置
- 长按分享:长按歌词行进入分享模式
- 景深模糊 + 边缘渐隐:非当前行歌词做模糊和渐隐,突出当前行
翻译与音译
歌词页支持三种显示模式:
- 原文 + 翻译:逐行翻译显示在原文下方
- 音译:日语/韩语歌曲的假名/罗马音辅助
- 关闭额外行:仅显示原文
遇到含假名的日语原文时,应用会为翻译行额外留出间距,避免日文字形和译文挤在一起。
歌词偏移
不同平台的歌词文件存在默认时间偏移:
- QQ 音乐:平台偏移 +500ms
- 其他平台:平台偏移 +1000ms
在此基础上,用户还可以为每首歌单独设置自定义偏移(±2000ms)。userLyricOffsetMs 按歌曲持久化保存,下次播放同一首歌时自动应用。
歌词字体与模糊
- 封面页和歌词页的歌词字号分别调节(0.5x - 1.6x),互不影响
- 歌词模糊开关独立于封面模糊和高级模糊