Xamarin.FormsでLottieを使ってアニメーションを表示する
LottieはAirBnBが開発した,アニメーションを表示するライブラリ. 表示させるアニメーションはこちらのサイトに公開されている.
動画はiOSの例なので,Androidはどうしようかと探した.この記事はAndroidの情報です.参考にした下記の記事では,Android,iOSの両方の情報が書かれています.とても素晴らしい.
https://xamgirl.com/lottie-animations-step-by-step-in-xamarin-forms/
アニメーションをダウンロードする
アニメーションファイルはLottieFilesからダウンロードする.
ファイル形式はjson.
好みのものをダウンロードする.
JSONファイルを各プロジェクトに配置する
以下はAndroidの例になるが,ファイルをAndroidプロジェクトのAssetsフォルダに入れる.ドラッグアンドドロップで良い.
ファイルのBuildActionをAndroid Asset
に変更する.デフォルトでこれになっているはず.
Com.Airbnb.Xamarin.Forms.Lottie
をNugetでインストール.
現時点での最新バージョンは3.1.2だが,うまく動かすことができなかったので,今回はバージョン3.0.4をインストールした.
手順としては,MainActivity.csにAnimationViewRenderer.Init()
を追加する,とのことだが,追加しなくても表示された.これはXamarin.Androidの場合に必要なのだろうか.わからない.
protected override void OnCreate(Bundle savedInstanceState) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); AnimationViewRenderer.Init();//これを追加 LoadApplication(new App()); }
ビュー(XAML)の編集
ContentPageに以下のようにLottieの名前空間を追加しておく.
<ContentPage ... xmlns:lottie="clr-namespace:Lottie.Forms;assembly=Lottie.Forms" ...>
アニメーションを表示させたい箇所に以下のようにAnimationView
を記述する.
<lottie:AnimationView x:Name="AnimationView" Animation="5834-pouring.json" AutoPlay="True" HorizontalOptions="FillAndExpand" Loop="true" Speed="1.0" VerticalOptions="FillAndExpand" />
Animation
プロパティにはアニメーションのファイル名を指定する.
再生速度や自動再生など様々な指定ができる.どんなプロパティがあるのかはソースコードを見たほうがわかりやすい.
ソースコード
スプラッシュスクリーンでアニメーションを表示させているが,スリープからの復帰時にアニメーションが表示されない.
解決したい.