从 Adobe After Effect 将动画导出为 JSON 并在 Android 上使用
Contents
1. 从 Adobe After Effect 导出 JSON
bodymovin 是 Adobe After Effect 的一个插件,提供了从 Adobe After Effect 导出 JSON 的方法。
1.1. 安装 bodymovin
bodymovin 提供了三种安装方法,由于国内网络带来的推送和同步问题,从 Adobe Add-ons 基本无法正常安装,推荐直接下载安装,方法如下。
1.1.1. 下载 bodymovin
首先从这里下载最新版本的 bodymovin,解压后在 /build/extension/ 文件下找到 bodymovin.zxp。
1.1.2. 下载并安装 ZXP Installer
从这里下载并安装 ZXP Installer。打开 ZXP Installer,点击 File / Open,选择上一步中得到的 bodymovin.zxp,稍等片刻即可安装完毕。
1.2. 使用 bodymovin 导出 JSON
打开一个 Adobe After Effect 项目,点击 Window / Extensions / Bodymovin,出现如图1所示对话框,点击 Selected 选中要导出的 Composition,选择导出文件的路径(Destination Folder),点击 RENDER 即可导出。
导出完成后,可以点击 PREVIEW 进入预览窗口,然后点击 CURRENT RENDERS 预览当前导出的项目,如图2。
2. 在 Android 上使用导出的 JSON
lottie-android 可以在 Android 上直接渲染使用 bodymovin 导出的 JSON,使用方法很简单,只需把前面导出的 JSON 放在 /main/assets/ 目录下,然后在布局文件中加入 LottieAnimationView ,使用 app:lottie_fileName 指明 JSON 文件即可。
<com.airbnb.lottie.LottieAnimationView android:id="@+id/animation_view" android:layout_width="wrap_content" android:layout_height="wrap_content" app:lottie_fileName="data.json" app:lottie_loop="true" app:lottie_autoPlay="true" />
lottie-android 也支持动态地加载动画和播放控制,详情可以参考项目页面。
3. 目前的问题
bodymovin 作为 Adobe After Effect 的插件,将 Adobe After Effect 的动画导出为 JSON,并提供了 JS 播放器,方便在网页端使用,但 bodymovin 还不能支持 After Effect 的全部功能。
lottie-android 在 bodymovin 的基础上,使用 bodymovin 导出的 JSON 在 Android 上进行渲染,也还不能支持 bodymovin 的全部功能。这就导致 lottie-android 对 After Effect 的支持更加有限,比如对 Repeater 就无法支持,如果在 After Effect 中使用了 Repeater,导出的 JSON 就无法在 Android 上正常播放。此外实测 lottie-android 也不支持使用表达式,使用 Math.round() 等函数也会导致动画无法正常播放。
由于诸如此类的兼容性问题,建议在一开始就面向 bodymovin 或者 lottie,规避无法支持的功能。如果想要把之前的 After Effect 动画导出为 JSON 并在 Android 上播放,须要仔细检查动画中是否用到了不支持的功能。
目前来看,对于简单的动画,使用 lottie 可以很方便和高效地完成从设计到实现的整个流程。但由于目前 lottie 和 bodymovin 对 Adobe After Effect 的支持尚不完善,如果在设计时刻意追求兼容 lottie 和 bodymovin,反而会带来额外工作量。