😎
[Android][kotlin]Lottieってアニメーションアイコンを公開しているサイトがイケてるので試しに動かしてみた

Abstract
- AndroidでLottieアニメーションを動かしてみたのでそのサンプル
- その説明
概要
自分でアニメーションって。そんなセンスないし、ようしきらんと思ってたらLottieFilesってサイト見つけた。
かなり豊富な種類のアニメーションアイコンがあってこれはイイ!!
で、公式通りに動かしたら例外吐いて動かせなかったのですが、修正できて動作することができました。
という事でソースコードをgithubに公開してます。
使い方
上記githubからcloneなりzipダウンロードして、Android Studioで開くだけ。
実装のポイント
分かってしまえば簡単。ホント公式通り。
- アニメーションのjsonをLottieFilesからゲットする。
- build.gradle.ktsにdependencies追加
- LottieAnimationViewをレイアウトに追加
1. アニメーションのjsonをLottieFilesからゲットする。
気にするところはライセンスぐらいかな。ダウンどーろの方法はココがくわしい。
※Lottie Simple License 要約
- 自由な利用が可能:LottieFiles で公開されているアニメーションファイルは、商用利用を含めて無料でダウンロード・複製・改変・配布・公開表示・デジタル実演が可能です。
- ライセンス条件の維持が必須:ファイルを使用・配布・改変する際は、元のライセンス条件をそのまま適用・表示する必要があります。
- 派生作品も同じ条件で配布:改変したファイル(派生作品)も、同じライセンス条件で配布しなければなりません。
- 追加の制限は禁止:このライセンスで許可された権利の行使を妨げるような追加条件や技術的制限を課すことは禁止されています。
- 競合サービスの構築は禁止:LottieFiles からファイルを収集・再編して、類似または競合するサービスを作ることはできません。
- クレジット表記は任意(推奨):作成者のクレジット表記は必須ではありませんが、表示することが推奨されています。
- 無保証・免責:ファイルは「現状のまま」提供され、いかなる保証もなく、使用による損害について作成者や Design Barn Inc. は責任を負いません。
2. build.gradle.ktsにdependencies追加
下記のimplを追加する。バージョンはAndroid Studioがいい感じに更新を促してくれるのでよしなに。
//implementation("com.airbnb.android:lottie:6.7.1")
// ↑こっち追加したら、いい感じに↓に変換してくれる。
implementation(libs.lottie)
3. LottieAnimationViewをレイアウトに追加
最期に、レイアウトファイルに適当に配置して実行すれば動作する。
activity_main.xml
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/animationView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- app:lottie_url="REPLACE_JSON_URL" ←これが曲者!!!
+ app:lottie_rawRes="@raw/eafc_play_button"
app:lottie_autoPlay="true"
app:lottie_loop="true"/>
公式サイトもちゃんと読めば書いてたんだけど、jsonファイルを自分のプロジェクトに追加するときはapp:lottie_urlでなくって、app:lottie_rawResにする必要があるらしい。
app:lottie_urlのままにしてたら例外吐いて落ちて焦った💦
ちなみに例外内容は下記。こんな例外吐かれても分からんよー。
Unable to match the desired swap behavior.
Shutting down VM
FATAL EXCEPTION: main (Ask Gemini)
Process: com.tks.lottiesample, PID: 3157
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tks.lottiesample/com.tks.lottiesample.MainActivity}: android.view.InflateException: Binary XML file line #29 in com.tks.lottiesample:layout/activity_main: Binary XML file line #29 in com.tks.lottiesample:layout/activity_main: Error inflating class <unknown>
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3644)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3781)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5782)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5673)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:71)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:138)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2306)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7918)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
で、実行すると無事表示される。

出来た!!
お役に立ちますように。。。
Discussion