Xamalin AndroidでLottieのスプラッシュ画面を表示する

LottieアニメーションのSplashScreenを設定する。

Com.Airbnb.Xamarin.Formのインストール

NuGetパッケージ「Com.Airbnb.Xamarin.Form」をプロジェクトにインストールする。

Lottieファイルを追加する

Androidプロジェクト「Assert」フォルダにLottieファイル(.json)を追加する。
(Splash.json)

参考)LottieファイルDownloadサイト https://lottiefiles.com/featured

スプラッシュScreen レイアウトファイルを作成

Androidプロジェクト「Resources/layout」フォルダにAndroidレイアウト「Activity_Splash.xml」を作成する。
フォルダが無い場合は作成する。
Lottieファイル名「Splash.json」

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.airbnb.lottie.LottieAnimationView
        android:id="@+id/animation_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:lottie_fileName="Splash.json"
        app:lottie_autoPlay="true"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>
 

スタイルタグの追加

Resources\values\styles.xmlに新しいstyleタグを追加する。
(resourcesタグ内に追加する)

<style name="MyTheme.Splash" parent="Theme.AppCompat.Light.NoActionBar">
	<item name="android:windowNoTitle">true</item>
	<item name="android:windowActionBar">false</item>
	<item name="android:windowFullscreen">true</item>
	<item name="android:windowContentOverlay">@null</item>
	<item name="android:windowBackground">@drawable/bg_color</item>
</style>
 

bg_colorを指定する

Androidプロジェクト「Resources\values\colors.xml」に「bg_color」を追加する

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="launcher_background">#FFFFFF</color>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
    <drawable name="bg_color">#02d1c4</drawable><!--追加-->
</resources>

 

SplashActivity.csの追加

Androidプロジェクトに新規アクティビティ「SplashActivity.cs」を追加する。
「ainLauncher = true」を追加する。

[Activity(Theme = "@style/MyTheme.Splash", MainLauncher = true, NoHistory = true)]
public class SplashActivity : Activity, Animator.IAnimatorListener
{
    public void OnAnimationCancel(Animator animation)
    {

    }

    public void OnAnimationEnd(Animator animation)
    {
        StartActivity(new Intent(Application.Context, typeof(MainActivity)));
    }

    public void OnAnimationRepeat(Animator animation)
    {

    }

    public void OnAnimationStart(Animator animation)
    {

    }

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.Activity_Splash);

        var animationView = FindViewById<LottieAnimationView>(Resource.Id.animation_view);
        animationView.AddAnimatorListener(this);
    }
}
 

MainActivity.csの属性の編集

Androidプロジェクト「MainActivity.cs」の属性から「MainLauncher = true」を削除する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください