10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rive】Flutterで超簡単にアニメーションを実装する

Last updated at Posted at 2024-01-26

はじめに

モバイルアプリを作成するうえでアニメーションはUI/UXの点でコスパが良いです。

しかしFlutterでアニメーション作成したいとき、コードで書くとかなり大変になってしまいます...

そこで誰でも簡単につくれるツールがあります!ツールはいくつかあるらしいですが、主流なのがLottieかRiveというツールです。以下それぞれの特徴を説明します。

各ツールの紹介

Lottie

image.png

Android、iOS、Web、Windows用アニメーションライブラリで、Adobe After Effectsで作成したアニメーションをjsonとしてエクスポートでき、モバイルおよびWeb上でアニメーションをレンダリングできます。

Lottieの特長としては、これまで複雑だったアニメーションの実装が手軽にでき、動画などのmovファイルやGIFアニメーションに比べてファイルサイズも格段に軽量、SVGをつかっているので拡大縮小も自由自在という点です。

Rive(りゔ)

image.png

今回利用するのはこちらです。
Lottieとほぼ同じです。

Lottie vs Rive

大きな違いはありませんが、Riveでは無料プランでも問題なくアニメーション作成が可能で、これが個人開発を行う場合にRiveが扱いやすいと感じました。

Flutterの実装においては、Riveはコード側でshapeの色を変更できるため、色別にアニメーションファイルを管理する必要がないという点が大きな利点となります。

エディターの使いやすさやコミュニティに上がっているアニメーションの数などはLottieが良さそうです。

RiveがLottieに喧嘩を売っている公式ページをみてみるとRiveはLottieよりファイルが小さく、高速で、必要なメモリも少ないらしいです。

Riveのはじめかた

使い方等を説明している記事はたくさんあるのではじめかただけ書いていきます。

  1. 公式ページに行きます:https://rive.app/
    image.png

  2. ねこの攻撃に気をつけながらGet Staetedしてください(かわいい)。
    5d64ab11-4dcb-4aad-82d0-1df6d652355c.png

  3. 新しいfileを作成します
    a. ※無料プランは3つまでしか作成できません!
    4adc80fd-4ed1-4417-a611-9cc5be75c0c2.png

  4. 作成したfileを開きます。
    a. 使い方はWebアニメーションはRiveが便利!がわかりやすかったです。
    b. Rive公式が出してるチュートリアル動画State Machine in Riveもおすすめです。
    image.png

  5. あとは作るだけです!が、私にはアニメーションの知識がないのでコミュニティから参考にするアニメーションを取ってきます。

Riveのコミュニティ

Riveユーザーがコミュニティに公開しているのもがいっぱいあるので参考になります。
image.png

お気に入りの作品があったらそのプレビューをエディターで開けますし、編集もできます。
(編集は無料会員は1のファイルしかできません)

編集を行う場合はRemixを選択してください。
image.png

ライセンスについて

CC BYライセンスに基いているため、変更を加える作品の作者名、ライセンスリンク、変更を行ったことを示せば、コミュニティに公開されている作品も編集して、商用利用もOKでした。
詳細はこちら:Community Overview

次にコミュニティで見つけたアニメーションをFlutterで動かしてみましょう。

Flutter実装

作成したアニメーションをFlutterに適用する方法を説明します。
今回はベルのアニメーションを反映させます。

  1. コミュニティでbellと検索したら良さそうなのがありましたのでRemixを選択
    image.png

  2. 次に編集、作成したアニメーションをダウンロードします。
    image.png

  3. 次にダウンロードしたrivファイル(今回はbell_notification.riv)をFlutterの任意の場所(例:assets/animations)に入れます。

  4. Flutterに適用するために公式からでているpackageをインストールします。
    rive | Flutter package

  5. 以下のドキュメントに沿ってコードを書きます。
    rive - Dart API docs

Flutter実装例

今回はRiveAnimationクラスに"bell_notification.riv"の場所を指定してあげて、animationsプロパティにベルをプルプルさせるアニメーションを指定しています。

// SizedBoxの中にアニメーションを入れる
const SizedBox(
    height: 30,
    width: 30,
    child: RiveAnimation.asset(
        'assets/animations/check_animation.riv',
        animations: ['アニメーションの動作をここに入れる'],
    ),
),

このanimationプロパティに何をいれてあげればいいのかというと、
image.png

右上をAnimateに切り替え、Riveエディターで作成した左下のAnimationsの部分になります。Riveではタイムラインと呼ばれています。
1つのプロジェクトに対して複数のアニメーション(タイムライン)を作成することができ、それをanimationsプロパティで使う部分を選択し、コントローラーで制御することが可能です。

今回は"Active"というプルプルさせるアニメーションを指定してあげます。

すると...
bell.gif
ベルをプルプルさせることができました!

さいごに

今回は一つのアニメーションを動かしましたが、ドキュメント見るとStateMachineで条件によって複数のアニメーションパターンを制御できるなど、いろいろなことできます。
公式のサンプルコードたち

皆さんもユーザーに飽きさせず、かつコスパよくユーザーの目線を誘導できるアニメーションを実装してみましょう!(使いすぎ注意です)

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?