Lottie4J 1.1.0 发布:渲染性能提升、调试工具增强及开源协议变更
目录
在 Lottie4J(用于在 JavaFX 中渲染 Lottie 动画的开源 Java 库)首次公开发布仅一周后,v1.1.0 版本便已发布。这是一个重大的版本更新!
在过去的一周里发生了很多事情:项目设计了 Logo,并为该 Logo 制作了 Lottie 动画(理所当然!),最重要的是,在测试了更广泛的动画文件后,我们对渲染进行了大量改进。这就是版本号从 1.0.0 跃升至 1.1.0 的原因:随之而来的是一些 API 的变更。
什么是 Lottie4J?
LottieFiles 是一种基于 JSON 的动画格式,最初由 Airbnb 开发,广泛用于网页和移动应用中的动画播放。目前已有 JavaScript、Android、iOS 等平台的播放器,但一直缺乏 Java/JavaFX 播放器。Lottie4J 正是为了填补这一空白。
该库分为两个 Maven 制品:
- Core:用于读取和写入 Lottie JSON 文件,如果您需要在没有播放器的情况下处理动画,这非常有用。
- FXPlayer:基于 JavaFX 的动画播放器。
您可以在 Maven Central 上找到它们。
Lottie4J v1.1.0 更新内容
许可证与 API 改进
项目已从 GPLv2 切换为 Apache License V2,这使得它对商业项目和开源项目都更加友好。日志记录已迁移至 SLF4J,并且对 JavaDoc 和代码结构进行了重大改进。
JavaFX 播放器的多项渲染修复
本次发布主要源于对更复杂的真实 Lottie 文件的测试,并修复了无法正确渲染的问题。以下是 FXPlayer 模块的更新内容:
- 修正了路径闭合(修复了粗边框中的间隙)
- 更好的边框渲染
- 支持遮罩 (Track Matte) —— Lottie 中关键的合成功能
- 修复了关键帧边界处图层消失的问题
- 修正了渐变 Alpha 通道解析,以实现正确的透明度
- 支持图像图层渲染 —— 现在可以正确显示 Lottie 文件中嵌入的图像
- 修复了 GradientStroke 反序列化和颜色格式处理问题
- 支持纯色图层渲染
- 支持文本渲染 —— 动画中的文本对象现在可以在 JavaFX 播放器中显示
- 整体改进了动画处理
- 增加了 高斯模糊效果 支持
- 修复了图层不透明度问题
- 正确合并了多个修剪路径 (Trim Paths)
- 修复了时间轴后期开始的动画
- 修复了虚线的描边样式
- 修复了重叠形状的淡入淡出过渡
- 改进了渐变填充
这是一长串的更新列表。在 1.0.0 版本中部分损坏或显示错误的动画(缺少点、错误的渐变、不可见的图层、没有文本)现在渲染效果已非常接近官方 JavaScript 播放器的表现。目前仍存在一些已知的未解决问题:高斯模糊与剪裁结合在 JavaFX 中处理起来比较棘手,且某些复杂的渐变形状与参考播放器仍有差异。但差距已经显著缩小。
更智能的调试工具
此版本中最有用的新增功能之一是扩展后的 LottieFileDebugViewer。该工具可以并排显示 JavaFX 播放器和官方 JavaScript Web 播放器的输出,从而直观地发现渲染差异。
此版本的新功能包括:
- 截图按钮,可一次捕获单帧或所有帧
- 平铺查看器 (Tile Viewer),可单独可视化每个图层
- 导出单个图层为新 Lottie 文件的功能,方便您在不加载整个动画的情况下隔离并测试特定的渲染问题
此外还有一个全新的 LottieFileSimpleViewer,这是一个极简的查看器,仅用于加载 Lottie 文件并使用 JavaFX 播放器循环播放。它适合快速检查,也是如何在您自己的项目中使用该播放器的示例。
自动化对比测试
这可能是开发者工具中最令人兴奋的补充:一个名为 CompareFxViewWithWebViewTest 的单元测试,实现了 JavaFX 播放器与 JavaScript Web 播放器之间的自动化对比。该测试会遍历 Lottie 文件列表,每隔五帧捕获两个播放器的截图,并比较它们的视觉相似度。任何差异过大的帧都会被保存到磁盘,以便您精确检查渲染在哪里以及如何产生偏差。
这使得追踪渲染回归和验证改进变得容易得多。请注意,该测试需要显示器(目前尚无法以无头模式运行 —— 详见 此议题),因此目前不会在 CI 上运行,但在本地非常有用。
试用
为所需的模块添加 Maven 依赖:
1.0.0 到 1.1.0 之间的完整变更列表可在 GitHub 上查看。
后续计划
我们的目标不是每周发布一个新版本,但当在特定动画中发现渲染问题时,调试工具和自动化测试将使隔离、修复和验证变得容易得多。如果您遇到在 JavaFX 中无法正确渲染的 Lottie 文件,可以将其添加到测试套件中进行调查。
目前最大的公开挑战是高斯模糊与剪裁的结合,这在 JavaFX 中尤其困难。这是目前已知的局限性。
如果您正在项目中使用 Lottie4J,我很乐意听听您的反馈!分享您的成果,报告您发现的渲染差异,并持续关注后续进展。非常欢迎您的贡献和建议。
- 网站: lottie4j.com
- GitHub: github.com/lottie4j/lottie4j
- 发行说明: lottie4j.com/releases