Xamarin Android用スプラッシュスクリーンの設定

オープニング用のSplashScreenを設定する

画像の作成

適当な大きさでPNG画像を作成して、「Androidプロジェクト/Resources/drawable」にsplash.pngとして配置する。

splash_screen.xmlの作成

「Androidプロジェクト/Resources/drawable」に以下のsplash_screen.xmlを配置する。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
	<item>
		<color android:color="@color/splash_background"/>
	</item>
	<item
    android:width="230dp"
    android:height="70dp"
	android:gravity="center">
		<bitmap
			android:gravity="fill_horizontal|fill_vertical"
			android:src="@drawable/splash" />
	</item>
</layer-list>
 

バックグランド色の設定

「Androidプロジェクト/Resources/values/colors.xml」にsplash_background設定のタグを加える。色は任意。

<color name="splash_background">#FFFFFF</color>
 

スプラッシュ用テーマの追加

「Androidプロジェクト/Resources/values/style.xml」にスプラッシュ用Styleタグを追加する
(resourcesタグ内に追加)

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

SplashActivity.csの作成

Androidプロジェクト/」に「新しい項目の追加」で「アクティビティ」を「SplashActivity.cs」として追加して以下の内容で書き換える。

[Activity(Theme = "@style/MyTheme.Splash", MainLauncher = true, NoHistory = true)]
public class SplashActivity : AppCompatActivity
{
    static readonly string TAG = "X:" + typeof(SplashActivity).Name;

    public override void OnCreate(Bundle savedInstanceState, PersistableBundle persistentState)
    {
        base.OnCreate(savedInstanceState, persistentState);
        Log.Debug(TAG, "SplashActivity.OnCreate");
    }

    // Launches the startup task
    protected override void OnResume()
    {
        base.OnResume();
        Task startupWork = new Task(() => { SimulateStartup(); });
        startupWork.Start();
    }

    // Simulates background work that happens behind the splash screen
    async void SimulateStartup()
    {
        Log.Debug(TAG, "Performing some startup work that takes a bit of time.");
        // await Task.Delay(8000); // Simulate a bit of startup work.
        Log.Debug(TAG, "Startup work is finished - starting MainActivity.");
        StartActivity(new Intent(Application.Context, typeof(MainActivity)));
    }
}
 

MainActivity.csの属性項目の削除

[ MainLauncher = true, ]の項目を削除する

コメントを残す

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

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