オープニング用の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, ]の項目を削除する