LVGL

LVGL Animated Image ウィジェットの使い方

LVGL アニメーション画像ウィジェットの仕組みを学びます。同じサイズのフレーム列をアップロードし、再生時間とループを設定して、ディスプレイ上でフレーム単位のアニメーションを再生します。

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

概要

アニメーション画像ウィジェットは、画面に動きを加えるいちばん簡単な方法です。回転するローダー、跳ねるアイコン、まばたきする目などに使えます。このガイドでは、PicoPixel で LVGL アニメーション画像ウィジェットがどう動くのか、追加方法、すべてのフレームを同じサイズにする理由、速度とループの制御方法、そしてインターフェース実行中に開始・停止する方法を説明します。

02/10

アニメーション画像ウィジェットとは?

アニメーション画像は、静止画像の列を順番に再生します。パラパラ漫画のようなものです。それぞれの画像は フレーム で、素早く切り替えることで動いているように見えます。フレーム一式を渡し、再生速度とループするかどうかを指定すれば、あとはウィジェットが処理します。

単一の繰り返しアニメーションに最適です。ローディングスピナー、脈打つハート、手を振るアイコンなどです。1 つのウィジェット、1 つのシーケンス、ループ再生という形です。

NOTE

内部では LVGL の lv_animimg ウィジェットを使っています。プロジェクトを書き出すと、PicoPixel が LVGL コード(lv_animimg_create、lv_animimg_set_src、lv_animimg_set_duration など)を生成します。自分で触る必要はありません。対象は LVGL 8.x です。

03/10

アニメーション画像とスプライトの使い分け

この 2 つのウィジェットは似ていますが、解決する問題が違います。

  • アニメーション画像 は、ループする 1 つ のアニメーションです。スピナーのように、グラフィックがいつも 1 つの動きしかしない場合に使います。
  • スプライト は、1 つのウィジェットに 複数 のアニメーションを持ち、それらを切り替えられます(Idle、Running、Happy など)。グラフィックに複数のモードが必要な場合に使います。

実際には、スプライトはアニメーション画像を組み合わせて作られており、各モードは内部では個別のアニメーション画像として扱われます。切り替えたい 2 つ目のアニメーションが欲しくなったら、スプライトを使う合図です。

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 タブから選ぶこともできます。

9 フレームの Nyan Cat スプライトが読み込まれたアニメーション画像ウィジェットを表示している PicoPixel エディター。下部にフレームのフィルムストリップ、右側にフレームセット、繰り返し回数、再生時間、再生状態の設定が表示されている
▸ 読み込んだ 9 フレームを、1000 ms で繰り返し再生しているアニメーション画像。
TIP

フレームはファイル名のアルファベット順に並びます。正しい順序で再生するには、frame_01.png、frame_02.png、frame_03.png のように先頭ゼロ付きで連番にしてください。frame_2.png は frame_10.png の 後 に並ぶため、アニメーションが崩れます。

NOTE

アニメーション画像には最低 2 フレームが必要で、最大 32 フレームまで追加できます。それ以上の動きが必要な場合は、動きの要点が伝わるフレームに絞ってください。すべてのフレームはデバイスに保存されます。

05/10

すべてのフレームを同じサイズにする理由

覚えておくべきルールは 1 つです。すべてのフレームは、幅と高さが完全に同じでなければなりません。 サイズの異なるフレームを追加しようとすると、PicoPixel は "All frames must have the same dimensions." と表示して止めます。

理由は単純です。ウィジェットは各フレームを同じ場所、同じ箱の中に描画します。フレーム 1 が 64×64 でフレーム 2 が 80×80 だと、滑らかにその場で動くのではなく、絵が跳ねたりずれたりします。全フレームを同じサイズに保つことで、きれいな動きになります。

WARNING

アップロードする前にフレームのサイズを揃えてください。きれいなシーケンスを作る最短の方法は、画像ツールで同じキャンバスから各フレームを書き出すことです。そうすれば必ず同じ寸法になります。

06/10

速度を設定する:再生時間

Duration 設定はアニメーションの再生速度を制御します。単位は**ミリ秒(ms)**で、1 フレームあたりの時間ではなく、すべてのフレームを 1 周する 時間を表します。デフォルトは 1000 ms(1 秒)です。

PicoPixel はその時間をフレーム全体に均等に割り振ります。つまり 8 フレームに 1000 ms を設定すると、各フレームは 125 ms 表示されます。速くしたいなら再生時間を下げます。ゆっくり落ち着いた動きにしたいなら上げます。

07/10

ループ:1 回再生か、ずっと再生か

Repeat 設定は、アニメーションが最後まで到達したあとどうするかを決めます。選択肢は 2 つです。

  • Infinite、アニメーションを永遠にループします。デフォルトで、止まってほしくないスピナーなどに向いています。
  • Normal(回数)、指定した回数だけ再生して停止します。3 に設定すると 3 回再生し、最後のフレームで止まります。
08/10

UI 実行中に再生を制御する

アニメーションを自動で動かし続ける必要はありません。イベントエディタ を使えば、ユーザー操作に応じて開始・停止できます。イベントを追加し、Animated Image Mode アクションを選び、対象のアニメーション画像を指定して、モードを選択します。

  • Start、再生を開始(または再開)します。
  • Stop、アニメーションを一時停止します。
  • Restart、最初のフレームに戻って再生し直します。

例:"connecting..." スピナーをボタンが押されるまで停止させ、押されたら Start、処理が終わったら Stop できます。

09/10

メモリ使用量を抑える

アニメーションは画像であり、画像は小さなデバイスでは容量を使います。次の点を意識すると容量を抑えられます。

  • 必要なフレームだけ使う。 滑らかな動きでも、動きの要点を押さえた少数のフレームで表現できることがあります。
  • フレーム寸法を控えめにする。 64×64 のアニメーションは 240×240 よりはるかに軽量です。
  • 色深度をディスプレイに合わせる(実機向けビルドについては ESP32 チュートリアル を参照)。
TIP

ファームウェアへ書き出す場合、アニメーション画像には lv_conf.h で LV_USE_ANIMIMG を有効にする必要があります。PicoPixel は書き出した README.md にこれを記載するので、ビルド手順(または AI アシスタント)が何を有効にすべきか分かります。

10/10

次のステップ

次に読む

次のガイドへ

PicoPixelでペットを使う方法 thumbnail
PICOPIXEL

PicoPixelでペットを使う方法

ギャラリーのペットをプロジェクトに追加し、デバイスの動作に合わせてアニメーションを切り替える方法を紹介します。データ取得中や温度の異常などを、キャラクターの動きで表現できます。

pets · sprites · picopixel
PicoPixel のテンプレート・UI キット・完成アプリの使い方 thumbnail
PICOPIXEL

PicoPixel のテンプレート・UI キット・完成アプリの使い方

テンプレートや UI キットを探して PicoPixel で開くところから、編集・再利用し、実機向けの 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