# Splashscreen プラグイン

テスト環境 ( バージョン番号 ) : [6.0.0](https://github.com/apache/cordova-plugin-splashscreen/releases/tag/6.0.0)

{% hint style="info" %}
このプラグインの詳細は、 [こちらの原文 ( GitHub )](https://github.com/apache/cordova-plugin-splashscreen) をご確認ください。
{% endhint %}

{% hint style="info" %}
iOS の場合、SplashScreen プラグインは、iOS プラットフォームに統合され、Launch Image は、Storyboard に置き換えられました。

Storyboard のイメージを設定する方法の詳細は、[SplashScreenドキュメント](https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/index.html#launch-storyboard-images)をご確認ください。
{% endhint %}

このプラグインを使用して、アプリの起動中に表示 ( または 非表示 ) されるスプラッシュスクリーンを制御します。

### プラグイン ID

```javascript
cordova-plugin-splashscreen
```

### プラグインの追加方法

このプラグインを使用する場合には、Monaca クラウド IDE の \[ Cordova プラグインの管理 ] 上で、`Splashscreen` プラグインを[有効](https://ja.docs.monaca.io/products_guide/monaca_ide/dependencies/cordova_plugin#cordova-puraguin-noinpto)にします。

### 対象プラットフォーム

* Android

### Peference を使用したカスタマイズ設定

#### config.xml

* `AutoHideSplashScreen` ( 真偽値、デフォルトでは true ) : スプラッシュスクリーンを自動的に非表示にするかを設定します。preference 「 `SplashScreenDelay` 」 に指定された時間の経過後、スプラッシュスクリーンが非表示になります。

```markup
<preference name="AutoHideSplashScreen" value="true" />
```

* `SplashScreenDelay` ( 数値、デフォルトでは 3000 ) : スプラッシュスクリーンを自動的に非表示にするまでの時間 ( ミリ秒単位 ) を指定します。

```markup
<preference name="SplashScreenDelay" value="3000" />
```

{% hint style="info" %}
以前は、ミリ秒ではなく秒単位で値を設定していたため、現在でも、30 未満の値を指定した場合は、「 秒 」 として処理されるようになっています ( 応急的な措置ですので、将来的には廃止します )。
{% endhint %}

スプラッシュスクリーンを無効にする場合には、次の preference を `config.xml` に追加します。

```markup
<preference name="SplashScreenDelay" value="0"/>
```

#### Android 特有の動作

`config.xml` には、以下の設定を追加することができます。

```markup
<preference name="SplashMaintainAspectRatio" value="true|false" />
<preference name="SplashShowOnlyFirstTime" value="true|false" />
<preference name="SplashScreenSpinnerColor" value="white" />
```

preference 「 `SplashMaintainAspectRatio` 」 は、任意の設定です。true に設定した場合、スプラッシュスクリーンの画像は、画面サイズに応じて引き伸ばされるのではなく、縦横比は固定されたまま、拡大 ( または 縮小 ) され表示されます ( CSS の background-size:cover に相当 )。この設定を使用すれば、画像が自然に表示されます。たとえば、画像が風景・文字の場合に有用です。特に、縦横比が異なる画面にも対応できるように、余白部分 ( セーフエリア ) をあらかじめ大きく取っている画像の場合に有用です。

このプラグインでは、端末の向きが変わるたび、スプラッシュ画像を再読み込みします。よって、横方向 ( landscape ) ・縦方向 ( portrait ) 用の画像をそれぞれ使用できます。

`SplashShowOnlyFirstTime` の設定もオプションです。デフォルトは `true` です。`true` に設定した場合、スプラッシュ画面はアプリケーションの起動時にのみ表示されます。しかし、 `navigator.app.exitApp()` を使用してアプリケーションを終了し、次の起動時にスプラッシュスクリーンを表示させる場合は、このプロパティを `false` に設定する必要があります （これは、「戻る」ボタンを使ってアプリケーションを終了する場合にも適用されます）。

"SplashScreenSpinnerColor" プリファレンスはオプションで、設定されていない場合は無視されます。 有効な色名または 16 進数の色コードに設定すると、Android 5.0 以降の端末でスピナーの色が変更されます。

## メソッド

* splashscreen.show
* splashscreen.hide

#### splashscreen.hide

スプラッシュスクリーンを非表示にします。

```javascript
navigator.splashscreen.hide();
```

#### splashscreen.show

スプラッシュスクリーンを表示します。

```javascript
navigator.splashscreen.show();
```

アプリ側では、アプリが起動して、`deviceready` イベントが発火するまで、`navigator.splashscreen.show()` を呼び出すことはできません。矛盾しますが、スプラッシュスクリーンは、アプリが起動する前に表示される画面です。よって、このような処理の方法では、スプラッシュスクリーンの表示が遅れてしまうことになります。そこで、前述のように、`config.xml` に、いくつかの設定をあらかじめしておき、アプリの起動後、直ちに ( アプリが完全に立ち上がる前、および、 deviceready イベントが発火する前 )、スプラッシュスクリーンが自動的に `表示される` ようにします。よって、アプリの起動時にスプラッシュスクリーンを表示するために、`navigator.splashscreen.show()` を使用することは、ほぼありません。

### 設定例

トップレベルの `config.xml` ファイル（ `platforms` 配下のファイルではありません）には、ここで指定されているような設定要素を追加します。

`src` 属性の値は、プロジェクトのルートディレクトリに対して相対的であり、wwwディレクトリではないことに注意してください（下記の「ディレクトリ構造」を参照してください）。ソースイメージに任意の名前を付けることができます。アプリの内部名はCordovaによって決定されます。

ディレクトリ構造：

```bash
    projectRoot
        res
            android
                screen
        www
            css
            img
            js
```

```markup
<platform name="android">
    <!-- you can use any density that exists in the Android project -->
    <splash src="/res/android/screen/splash-land-hdpi.png" density="land-hdpi"/>
    <splash src="/res/android/screen/splash-land-ldpi.png" density="land-ldpi"/>
    <splash src="/res/android/screen/splash-land-mdpi.png" density="land-mdpi"/>
    <splash src="/res/android/screen/splash-land-xhdpi.png" density="land-xhdpi"/>

    <splash src="/res/android/screen/splash-port-hdpi.png" density="port-hdpi"/>
    <splash src="/res/android/screen/splash-port-ldpi.png" density="port-ldpi"/>
    <splash src="/res/android/screen/splash-port-mdpi.png" density="port-mdpi"/>
    <splash src="/res/android/screen/splash-port-xhdpi.png" density="port-xhdpi"/>
</platform>

<preference name="SplashScreenDelay" value="10000" />
```
