屏幕
480 × 480
Square
屏幕适配
通用
LVGL
8.x
兼容
测试平台
ESP32-P4
maintainer
最后更新
1 周前
动画示例 截图 1当前显示
动画示例 截图 2
动画示例 截图 3
动画示例 截图 4
动画示例 截图 5
作者 ed_embedded
lvgl 动画 esp32 动画 免费模板

概览

正在寻找带有真实关键帧控制的免费 LVGL 动画模板?这个 PicoPixel 项目在 480 x 480 的嵌入式 UI 画布上展示基于时间轴的控件动画,覆盖位置、尺寸、透明度以及混合轨道。

这些不是静态运动稿,也不是逐帧图片序列。该模板展示的是细粒度的关键帧式动画,可以随时间分别控制单个属性。在时间轴视图中,你可以看到 X/Y 位置、W/H 尺寸和透明度的独立轨道,关键帧沿时间轴分布,因此每个属性都可以在自己的时间点变化。

你可以把它作为 ESP32 仪表盘、引导界面、加载状态、注意力提示、确认反馈、智能设备界面、信息亭面板,或任何需要控件在按钮按下后移动、调整大小、淡入淡出,或组合多个动画属性的 LVGL UI 起点。

包含内容

  • 四个 480 x 480 动画示例,分别布局为 Position、Size、Opacity 和 Mixed 画板。
  • 位置动画,通过带关键帧的 X/Y 变化把控件从一个位置移动到另一个位置。
  • 尺寸动画,通过带关键帧的 W/H 变化调整控件宽度和高度。
  • 透明度动画,随时间改变混合透明度,用于淡入淡出效果。
  • 混合动画,在单个控件上组合多条动画轨道。
  • Play Animation 按钮,每个示例一个按钮,因此每条时间轴都可以从 UI 触发。
  • 时间轴/关键帧编辑器预览,展示带轨道和关键帧的真实动画模式。
  • PicoPixel 标志目标,在每个示例中作为被动画控制的控件。
  • 可复用视觉图标,包括位置、尺寸、透明度和混合动画图形。
  • Roboto 字体资源,用于卡片标题、说明文字和按钮。

资源快照

资源面板显示这是一个紧凑的 LVGL 动画参考:

  • 图片: 5,包括 PicoPixel 标志、字标以及小型动画概念图标。
  • 颜色: 0,颜色直接应用在设计中。
  • 字体: 2Roboto 22Roboto Bold 32
  • 控件: 0,让示例专注于屏幕对象、事件和动画时间轴。

可见图片资源包括:

  • 96x96 的青色位置/缩放风格图标。
  • 96x96 的青色点阵透明度风格图标。
  • 250x250 的 PicoPixel 标志图片。
  • 356x100 的 PicoPixel 字标图片。
  • 96x96 的粉色混合/位置风格图标。

这组资源刻意保持很小。运动来自带关键帧的 LVGL 对象属性,而不是存储大量图片帧序列。

图层结构

图层面板按动画类型组织项目:

  • Position,包含 Play Pos AnimationPico LogoImage 1 和标签。
  • Size,包含 Play Size AnimationPico LogoImage 3 和标签。
  • Opacity,包含 Play Opacity AnimationPico LogoImage 4 和标签。
  • Mixed,包含 Play Mixed AnimationPico Logo 和标签。

每个画板都遵循相同的教学模式:标题和说明解释动画类型,PicoPixel 标志作为动画目标,一个蓝色按钮触发播放。

时间轴和关键帧

这个模板的重点是动画由时间轴控制。在动画编辑器预览中,左侧列出 PositionSizeOpacityMixed 等动画类型。随后时间轴会把选中的动画控件展开为属性轨道。

在混合示例中,截图显示:

  • 位置轨道,具有独立的 XY 值。
  • 尺寸轨道,具有独立的 WH 值。
  • 透明度轨道,具有 % 值。
  • 多个关键帧,放置在不同时间点。
  • 时间轴拖动预览,可以在精确时间戳检查动画。

这让示例比简单过渡更强大。你可以通过在准确时间设置准确数值来编排一个控件,并在导出前预览结果。

TIP

导出前,请在 PicoPixel 中重命名重要对象,例如 btn_play_positionbtn_play_sizebtn_play_opacitybtn_play_mixedanimated_logoanimation_card。清晰的名称会让生成的 LVGL 动画和事件代码更容易阅读。

时间轴动画与帧动画

这个模板关注的是带关键帧的控件动画:随时间移动、调整大小并改变 LVGL 对象透明度。这不同于基于帧的动画图片,后者的每一帧都是单独位图。

  • 当你想动画化 LVGL 对象属性,例如位置、宽度、高度或透明度时,请使用这个模板。
  • 当你有预渲染帧序列,例如 spinner、类似 sprite 的加载器或插画循环时,请使用 LVGL 动画图片
  • 当你希望按钮、屏幕加载、手势或其他触发器播放这些动画之一时,请使用 事件编辑器

两种方式都很有用。关键帧通常更适合 UI 动效和过渡,因为对象仍然可编辑,并且可以避免存储大量图片帧。

为什么它很适合 LVGL

LVGL 擅长随时间更新对象属性,而 PicoPixel 的动画模式会把这些值显式展示出来,而不是藏在手写 C 代码里。

  • 位置关键帧映射到对象坐标,适合面板、图标、卡片和通知移动。
  • 尺寸关键帧映射到宽度和高度,适合展开控件、脉冲效果、进度强调和焦点状态。
  • 透明度关键帧映射到混合透明度,适合淡入淡出、禁用状态、显示和注意力提示。
  • 混合轨道组合多个属性,因此一个控件可以作为单一时间轴同时移动、调整大小和淡出。
  • 事件可以触发动画,所以按钮点击可以在实时预览和导出的 LVGL 项目中运行时间轴。
  • 项目会导出为标准 LVGL 8.x UI 代码,因此可以集成到 ESP-IDF、Arduino、PlatformIO、STM32、Zephyr 或其他 LVGL 构建中。

运行时模式

PicoPixel 可以为你生成动画设置和播放动作。如果你需要手动扩展导出的项目,同样的概念会映射到普通 LVGL 动画代码:初始化动画,选择目标对象,设置数值和时序,然后启动。

c
static void set_opa(void * obj, int32_t value)
{
    lv_obj_set_style_opa((lv_obj_t *)obj, (lv_opa_t)value, 0);
}

static void fade_logo(lv_obj_t * logo)
{
    lv_anim_t a;
    lv_anim_init(&a);
    lv_anim_set_var(&a, logo);
    lv_anim_set_values(&a, LV_OPA_COVER, LV_OPA_30);
    lv_anim_set_time(&a, 450);
    lv_anim_set_exec_cb(&a, set_opa);
    lv_anim_start(&a);
}

对于大多数模板用户,可视化时间轴是更简单的路径:在 PicoPixel 中创建关键帧,用 Play Animation 事件动作连接按钮,然后导出。

TIP

在烧录前先在 PicoPixel 中打开项目,实时预览所有动画。预览模式不需要硬件。

自定义

把它作为免费的 LVGL 关键帧动画模板,然后把时间轴调整为你自己的 UI。

  • 将 PicoPixel 标志替换为你自己的图标、状态块、卡片、模态框或指示器。
  • 修改位置关键帧,用于滑入面板、移动通知,或把注意力引导到某个控件。
  • 修改尺寸关键帧,用于构建脉冲、按钮反馈、展开卡片或焦点状态。
  • 修改透明度关键帧,让内容淡入或淡出。
  • 在混合示例中组合位置、尺寸和透明度,做出更丰富的 UI 动效。
  • 调整时序,让动画对于嵌入式交互来说足够快速。
  • 使用 ClickedScreen Loaded 等事件,在合适时机播放动画。
  • 保持图片尺寸适中,并在烧录到内存有限的开发板前删除未使用资源。

导出到你的项目

在 PicoPixel 中打开模板,检查动画时间轴,重命名重要对象,并用它的 Play Animation 按钮预览每个画板。然后把项目导出为 LVGL C 代码。

对于 ESP32 项目,常见流程是:

  1. 选择与你所需动效匹配的画板:Position、Size、Opacity 或 Mixed。
  2. 将标志和标签替换为你自己的 UI 对象。
  3. 在动画时间轴中调整关键帧、时序和缓动。
  4. 使用事件编辑器把触发器连接到 Play Animation 动作。
  5. 将 PicoPixel UI 导出为 LVGL C。
  6. 将导出的文件加入你的 ESP-IDF、Arduino 或 PlatformIO 项目。
  7. 在 LVGL 和显示驱动准备好后调用 ui_init()

更多背景请阅读 事件编辑器指南使用 PicoPixel 模板 指南。

适用场景

当你需要以下内容的清晰起点时,这个模板很适合:

  • LVGL 关键帧动画示例
  • ESP32 UI 动效原型
  • 时间轴控制的控件运动
  • 按钮触发的动画播放
  • 位置、尺寸和透明度动画测试
  • 加载状态和进度反馈
  • 确认和注意力提示
  • 引导界面和交互式演示
  • 学习 PicoPixel 可视化时间轴如何变成 LVGL 行为

快速开始

第一次使用 PicoPixel 项目?指南会带你了解如何打开、定制并将这个项目烧录到开发板。

安装指南

PicoPixelio /picopixel-files

在 GitHub 查看源码

分享
链接已复制!
报告 这个项目有什么问题吗?