LVGL

使用 LVGL 动画图片控件

了解 LVGL 动画图片控件的工作方式:上传一组尺寸一致的帧,设置时长和循环方式,并在显示屏上播放逐帧动画。

EDEd
lvglanimated-imageanimimganimationframespicopixel
已更新2026-05-29
01/10

概览

动画图片控件可以为界面添加旋转的加载图标、弹跳的图标或眨眼表情。本指南介绍如何在 PicoPixel 中添加 LVGL 动画图片控件、准备尺寸一致的帧、设置速度和循环次数,以及在运行时控制播放。

02/10

什么是动画图片控件?

动画图片按顺序播放一组静态图片,如同翻页动画。每张图片称为一帧,连续快速播放就会产生动态效果。你只需提供图片帧,设置播放时长和循环方式。

它适合播放一段重复动画,例如加载指示器、跳动的爱心或挥手图标。

NOTE

该功能基于 LVGL 的 lv_animimg 控件。导出时,PicoPixel 会生成 lv_animimg_create、lv_animimg_set_src、lv_animimg_set_duration 等代码,无需手写。当前支持 LVGL 8.x。

03/10

动画图片与精灵:该选哪个?

  • Animated Image(动画图片):只播放一段动画,适合一直旋转的加载图标等。
  • Sprite(精灵):在一个控件中保存多段动画,并按需切换,例如 Idle、Running 和 Happy。

精灵的每个模式底层都是一段动画图片。如果需要在多个动画之间切换,就应使用精灵。

04/10

添加控件并上传图片帧

  1. 将 Animated Image 控件添加到屏幕。
  2. 在属性面板找到 Image Set,点击 Add Image Set。
  3. 在 NEW 标签下点击 Click to upload frames,选择图片。可以一次选择多张,支持 PNG 和 JPEG(.png、.jpeg、.jpg)。
  4. 点击 Continue,将图片帧添加到控件。Image Set 会显示帧数,例如 “8 frames”。

也可以从 Assets 标签中选择已有帧组,无需重新上传。

PicoPixel 中的动画图片控件载入了 9 帧 Nyan Cat 动画,底部显示帧序列,右侧显示 Image Set、Repeat、Duration 和播放设置
▸ 已配置的动画图片:9 帧,播放时长 1000 ms,无限循环。
TIP

帧按文件名的字母顺序排列。建议用 frame_01.png、frame_02.png 等补零的序号命名,确保顺序正确。否则 frame_2.png 会排在 frame_10.png 之后。

NOTE

每段动画至少需要 2 帧,最多支持 32 帧。每一帧都要存储在设备中,尽量选择能表现动作的关键画面。

05/10

为什么每一帧的尺寸必须一致?

所有帧的宽度和高度必须完全相同。 上传不同尺寸的图片时,PicoPixel 会提示 “All frames must have the same dimensions.”

控件会在同一区域绘制每一帧。如果第一帧是 64×64,第二帧是 80×80,播放时就可能出现跳动和偏移。统一尺寸后,画面才能保持对齐。

WARNING

请在上传前统一帧尺寸。最好在图像工具中使用同一个画布导出所有帧,避免尺寸不一致。

06/10

设置播放速度

Duration 表示动画完整播放一次所需的时间,单位为毫秒(ms),并非单帧时长。默认值为 1000 ms,即一秒。

PicoPixel 会将时长平均分配给所有帧。例如 8 帧动画设置为 1000 ms,每帧显示 125 ms。缩短时长会加快播放,延长时长会放慢播放。

07/10

设置循环次数

Repeat 决定动画播放完后是否继续:

  • Infinite:无限循环,默认选项,适合持续旋转的加载图标。
  • Normal:播放指定次数后停止。例如设置为 3,就会播放三次,再停留在最后一帧。
08/10

在运行时控制播放

通过事件编辑器,可以根据用户操作启动或停止动画。添加事件,将动作设为 Animated Image Mode,选择目标动画图片,再设置播放模式:

  • Start:开始或继续播放。
  • Stop:暂停播放。
  • Restart:返回第一帧并重新播放。

例如,将表示“正在连接”的加载动画默认设为停止,按钮按下后执行 Start,任务完成后执行 Stop。

09/10

控制内存占用

动画由图片组成,在小型设备上需要注意资源开销:

  • 精简帧数:少量选得合适的帧,也能形成流畅的动画。
  • 控制尺寸:64×64 的动画比 240×240 占用的空间小得多。
  • 使用适合显示屏的色深:更多硬件配置说明见 ESP32 教程。
TIP

在固件中使用动画图片,需要在 lv_conf.h 中启用 LV_USE_ANIMIMG。导出的 README.md 会注明这一要求,便于你或 AI 编程助手完成配置。

10/10

下一步

继续阅读

接着学点什么

如何在 PicoPixel 中使用宠物 thumbnail
PICOPIXEL

如何在 PicoPixel 中使用宠物

宠物是预制的动画精灵,包含多种动画模式,可根据设定的条件切换。从目录中选一个,添加到项目中,然后将其连接起来,让它对设备正在做的任何事情做出反应:获取数据、过热、代码审查等等。

pets · sprites · picopixel
如何使用 PicoPixel 模板、UI 套件和完整应用 thumbnail
PICOPIXEL

如何使用 PicoPixel 模板、UI 套件和完整应用

查找 PicoPixel 模板、UI 套件、示例、精灵、控件和完整应用,了解如何打开、下载、导入和修改项目,并导出用于设备的 LVGL C 代码。

templates · ui-kits · full-apps
PicoPixel LVGL MCP Server Setup Guide thumbnail
PICOPIXEL

PicoPixel LVGL MCP Server Setup Guide

Set up the PicoPixel LVGL MCP server for Claude, ChatGPT, Codex, or Cursor. Learn agent settings, reusable components, colors, fonts, and assets.

LVGL MCP · MCP server setup · AI UI design