3. 修改Android动画

3.1. 图片动画

Android开机图片动画是一个存储在 bootanimation.zip 文件中的无压缩 ZIP 档案,通常位于 /system/media/目录。该文件包含 PNG 图片序列和一个 desc.txt 配置文件,用于定义动画的分辨率、帧率和播放方式,通过替换 bootanimation.zip,可以自定义开机动画。

本教程将指导:

  • 创建一个新的 bootanimation.zip 文件,分辨率720x190,帧率 60 FPS,单部分动画。

  • 将新的 bootanimation.zip 安装到 Android 设备。

3.1.1. 准备工作

3.1.1.1. 所需工具

  • 电脑:Windows、Mac 或 Linux 系统。

  • 图像编辑软件:如 Photoshop、GIMP,用于创建或编辑 PNG 图片。

  • 7-Zip 或 WinRAR:用于创建无压缩的 ZIP 文件。

  • ADB(Android Debug Bridge):用于将文件推送至设备。

3.1.1.2. 设备要求

  • Android 设备(已启用 USB 调试)。

  • 确保设备分辨率与动画配置匹配(本例为 720x190)。

3.1.2. 创建新的bootanimation.zip文件

3.1.2.1. 准备动画素材

创建 PNG 图片:

  • 使用图像编辑软件创建一系列 PNG 图片,每张图片代表动画的一帧。

  • 图片分辨率应为 720x190(与你的配置匹配)。

  • 命名图片为连续编号,例如 0000.png, 0001.png, 0002.png 等,建议从 0000 开始。

  • 确保图片格式为 PNG(支持最高 32 位),避免使用 JPG 或其他格式。

  • 根据帧率 60 FPS,每秒需要 60 张图片。例如,5 秒动画需要约 300 张图片。

组织文件夹结构:

  • 创建一个名为 bootanimation 的文件夹。

  • 在 bootanimation 文件夹中,创建子文件夹 part0(根据你的配置 part0)。

  • 将所有 PNG 图片放入 part0 文件夹。

示例结构:

bootanimation/
├── desc.txt
└── part0/
    ├── 0000.png
    ├── 0001.png
    ├── 0002.png
    └── ...

3.1.2.2. 创建desc.txt文件

编写desc.txt:

  • 在 bootanimation 文件夹中创建 desc.txt 文件。

  • 根据你的配置(720 190 60 和 c 1 30 part0),内容如下:

1
2
720 190 60
c 1 30 part0

参数说明如下:

  • 第一行:720 190 60

720:动画宽度(像素)。

190:动画高度(像素)。

60:帧率(每秒帧数,FPS)。
  • 第二行:c 1 30 part0

c:动画类型,表示在系统启动完成时立即停止.

1:循环次数(1 表示播放一次)。

30:动画结束后暂停的帧数(以帧为单位,30 帧在 60 FPS 下约为 0.5 秒)。

part0:动画部分的文件夹名称。
  • 注意:文件需使用 Linux 换行格式(LF),避免 Windows 的 CRLF 格式。可用 Notepad++ 或 VS Code 保存为 LF 格式。

确保文件正确:

  • 确认 desc.txt 和 part0 文件夹名称与配置一致。

  • 确保 PNG 文件按顺序命名,且无其他无关文件(如 Windows 自动生成的 thumbs.db)。

3.1.2.3. 打包bootanimation.zip

使用7-Zip打包:

  • 打开 7-Zip,导航到 bootanimation 文件夹。

  • 选中 desc.txt 和 part0 文件夹。

  • 右键选择“添加到压缩包”。

压缩格式:zip

  • 压缩级别:存储(无压缩,重要!)

  • 输出文件名:bootanimation.zip

  • 点击“确定”生成 bootanimation.zip。

验证 ZIP 文件:

  • 确保 ZIP 文件未压缩(可打开检查文件大小接近原始 PNG 文件总和)。

  • 确认内部结构正确:

bootanimation.zip
├── desc.txt
└── part0/
    ├── 0000.png
    ├── 0001.png
    └── ...

3.1.3. 连接设备调试

  • 将设备通过 USB 连接到电脑。

  • 打开命令行(Windows CMD 或终端)

3.1.3.1. 推送文件

使用 ADB 将新 bootanimation.zip 推送到 /system/media/

adb root && adb remount
adb push 电脑路径\bootanimation.zip /system/media/bootanimation.zip

3.1.3.2. 重启设备

使用 ADB 或手动重启:

adb reboot

检查新动画是否生效。

3.1.3.3. 替换源码sdk动画

测试效果ok,将源码储存device/rockchip/common/bootanimation.zip,替换修改的新动画文件bootanimation.zip,然后-Au编译最终完成。

3.1.4. 调试与故障排除

3.1.4.1. 动画不播放,显示默认Android文本

  • 检查 bootanimation.zip 是否正确命名为 bootanimation.zip。

  • 确保 ZIP 文件使用“存储”模式打包(无压缩)。

  • 验证 desc.txt 格式正确(使用 LF 换行,无多余空格或空行)。

  • 确保 PNG 文件命名连续且正确(如 0000.png 开始)。

3.1.4.2. 黑屏或闪烁

  • 确保 PNG 文件分辨率与 desc.txt 中的 720 190 一致。

  • 检查是否存在无关文件(如 thumbs.db)。

  • 尝试将文件放置在 /system/media/

3.1.4.3. 动画播放速度不正确

  • 确认 desc.txt 中的帧率(60 FPS)与 PNG 图片数量匹配。

  • 调整图片数量或帧率以优化播放时长。

3.2. 视频动画

安卓除了支持图片动画还支持视频动画,相对图片动画而言视频动画修改更简单。

3.2.1. 准备视频

视频动画要求视频格式为ts格式,可通过ffmpeg将mp4视频转换为ts格式视频,或者自行百度搜索“mp4转ts在线工具”网站进行转换。ffmpeg转换命令如下:

1
2
#将input.mp4转换为output.ts
ffmpeg -i input.mp4 -c:v copy -c:a copy -f mpegts output.ts

3.2.2. 修改SDK源码

1、需要将ts格式的视频重命名为bootanimation.ts,然后放到SDK源码/device/rockchip/common/bootvideo目录下。

2、需要把图片动画取消,修改SDK源码/device/rockchip/common/device.mk,修改内容如下,将开机图片动画注释:

1
2
3
# 开机动画
# PRODUCT_COPY_FILES += \
#     $(LOCAL_PATH)/bootanimation.zip:/system/media/bootanimation.zip

修改完成如下图所示:

../../_images/android_animation_0.jpg

3、开启视频动画,修改SDK源码/device/rockchip/common/BoardConfig.mk,在文件末尾添加以下内容:

1
BOOT_VIDEO_ENABLE ?= true

修改完成后如下图所示:

../../_images/android_animation_1.jpg

3.2.3. 重新编译镜像并下载验证

参考 编译 Android 镜像 章节重新编译镜像并将编译出来的镜像烧录到板卡。

启动板卡后看到启动动画是自己添加的动画即修改成功。