数秒間画像を見る必要があり、それまではアプリケーションを使用できません。 そして、私はアプリケーションを起動した後に毎回これをしなければなりません。 起動したアプリケーションを知っています。 私はそれが何をするか知っています。 使用させてください!
Googleが推奨するもの
Googleサポーターがスプラッシュスクリーンを使用していることを知って驚くでしょう。 これは、Material Design仕様でここで説明されています。
これは常にそうではありませんでした。 GoogleはSplash Screenに反対し、アンチパターンとさえ呼んでいました 。
![画像](https://habrastorage.org/getpro/habr/post_images/d98/15a/193/d9815a193f7d5173d75a92c7f060f794.png)
私は何を見ていますか?
正しいスプラッシュスクリーン
Googleはそれ自体に矛盾はないと思います。 古いアドバイスと新しい推奨事項はうまくいっています。 (ただし、時間がかかるロード画面を使用することは、まだ良い考えではありません。これは行わないでください)
ただし、Androidアプリケーションの起動には、特にコールドスタート中に一定の時間が必要です。 回避できない遅延があります。 空白の画面を表示する代わりに、ユーザーに何か良いものを見せてみませんか? このアプローチのためにGoogleが略しています。 ユーザーの時間を無駄にすることはできませんが、アプリケーションを初めて起動するときに、アプリケーションの空の未構成セクションを表示しないでください。
Googleアプリの最新のアップデートを見ると、ダウンロード画面を使用する同様の方法が表示されます。 たとえば、YouTubeアプリをご覧ください。
![画像](https://habrastorage.org/getpro/habr/post_images/e90/04c/636/e9004c63667e6b47e755d0de2bb2e3e0.gif)
スプラッシュスクリーンの表示に費やす時間は、アプリケーションの実行にかかる時間と正確に一致します。 コールドスタートでは、これはスプラッシュスクリーンがより長く表示されることを意味します。 また、アプリケーションが既にキャッシュされている場合、スプラッシュ画面はほとんどすぐに消えます。
スプラッシュスクリーンの実装
スプラッシュスクリーンを正しい方法で実装することは、自分で設定できるものとは少し異なります。 表示されるスプラッシュスクリーンビューは、スプラッシュアクティビティ(注:アクティビティ-アクティビティ、アクティビティ)でレイアウトファイルを展開(注:展開)する前であっても、すぐに準備できます。
したがって、レイアウトファイルは使用しません。 代わりに、アクティビティのテーマの背景にスプラッシュスクリーンの背景を示します。 これを行うには、最初にres / drawableでXMLドロウアブルを作成する必要があります。
注:以下のコードはすべてGitHubで利用できます 。
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/gray"/> <item> <bitmap android:gravity="center" android:src="@mipmap/ic_launcher"/> </item> </layer-list>
ここで、背景色と画像を設定します。
次に、このドロアブルをスプラッシュスクリーンアクティビティのテーマの背景として設定する必要があります。 styles.xmlに移動して、スプラッシュスクリーンアクティビティの新しいテーマを追加します。
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> </style> <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar"> <item name="android:windowBackground">@drawable/background_splash</item> </style> </resources>
新しいSplashThemeで、XMLドロアブルを背景として設定します。 そして、AndroidManifest.xmlのスプラッシュスクリーンアクティビティにこのテーマをインストールします。
<activity android:name=".SplashActivity" android:theme="@style/SplashTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
最後に、SplashActivityクラスはメインアクティビティにリダイレクトする必要があります。
public class SplashActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = new Intent(this, MainActivity.class); startActivity(intent); finish(); } }
SplashActivityのビューはカスタマイズしていないことに注意してください。 プレゼンテーションはトピックから直接取得されます。 テーマを使用してスプラッシュスクリーンアクティビティの外観を設定すると、すぐに使用できます。
Splashアクティビティのレイアウトファイルがある場合、アプリケーションが完全に初期化された後にのみ表示されますが、これは非常に遅いです。 結局のところ、アプリケーションが初期化される前に、スプラッシュスクリーンに短時間だけ表示する必要があります。
正しくやる
上記の手順が完了すると、スプラッシュスクリーンが正しい方法で実装されます。
![画像](https://habrastorage.org/getpro/habr/post_images/adc/1ad/53e/adc1ad53efd39e77f6b7d2d83b1913ed.gif)
この知識を武器に、スプラッシュスクリーンが適切に機能するようにします。 ユーザーの時間を無駄にしないでください。しかし、彼らが待っている間に見て喜んでくれるものを与えてください。