Android
 Computer >> コンピューター >  >> プログラミング >> Android

Androidアプリにスプラッシュ画面を実装する方法をわかりやすく解説

スプラッシュ画面とは

スプラッシュ画面(スプラッシュスクリーン)とは、アプリの起動時に一瞬だけ表示される導入画面のことです。ロゴやブランドカラーを表示することでユーザーに良い第一印象を与えられるだけでなく、アプリの初期化にかかる待ち時間を自然に演出できます。

この記事では、Android StudioとJavaを使って、約3秒間表示されるシンプルなスプラッシュ画面を実装する手順を、サンプルコードとともに段階的に解説します。

実装手順

ステップ1:新規プロジェクトを作成する

Android Studioを起動し、「File」→「New Project」を選択して新しいプロジェクトを作成します。プロジェクト名やパッケージ名など必要な項目を入力しましょう。本記事では言語にJavaを使用したプロジェクトを前提としています。

ステップ2:メインレイアウトを作成する(res/layout/activity_main.xml)

遷移先となる画面のレイアウトファイルに、以下のコードを追加します。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/activity_main"
    android:padding="20dp"
    android:layout_gravity="center"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/hello_id"
        android:layout_centerInParent="true"
        android:text="Hello my friend"
        android:textSize="20sp" />
</RelativeLayout>

ステップ3:スプラッシュ用アクティビティを実装する(src/MainActivity.java)

スプラッシュ画面の役割を担うMainActivityに、以下のコードを追加します。約3秒間待機した後、SecondActivityへ遷移し、finish()で自身を閉じてスプラッシュ画面を終了させます。

package com.example.sample;

import android.content.Intent;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

import static java.lang.Thread.sleep;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // スプラッシュ画面を3秒間表示する
        try {
            sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        // メイン画面(SecondActivity)へ遷移する
        startActivity(new Intent(MainActivity.this, SecondActivity.class));

        // スプラッシュアクティビティを閉じる
        finish();
    }
}

ステップ4:スプラッシュ画面の背景を作成する(res/drawable/splash_screenbackground.xml)

背景色の上にロゴ画像(ここではmxというドローアブルリソース)を中央に配置した、レイヤーリスト形式のdrawableファイルを作成します。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="https://schemas.android.com/apk/res/android">
    <item>
        <color android:color="@color/splash_background_color"/>
    </item>
    <item>
        <bitmap
            android:src="@drawable/mx"
            android:tileMode="disabled"
            android:gravity="center"/>
    </item>
</layer-list>

ステップ5:色を定義する(res/values/colors.xml)

スプラッシュ画面の背景色(splash_background_color)を含むカラーリソースを定義します。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#008577</color>
    <color name="colorPrimaryDark">#00574B</color>
    <color name="colorAccent">#D81B60</color>
    <color name="splash_background_color">#5456e1</color>
</resources>

ステップ6:スプラッシュ用テーマを追加する(res/values/styles.xml)

ウィンドウ背景にステップ4で作成したdrawableを指定した「SplashTheme」を追加します。タイトルバーを非表示にし、フルスクリーンで表示されるよう設定しています。

<resources>
    <!-- アプリケーションの基本テーマ -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <!-- スプラッシュ画面用テーマ -->
    <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/splash_screenbackground</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>
    </style>
</resources>

ステップ7:遷移先アクティビティを作成する(src/SecondActivity.java)

スプラッシュ表示の後に開かれるメイン画面となるアクティビティです。

package com.example.sample;

import android.app.Activity;
import android.os.Bundle;

public class SecondActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

ステップ8:マニフェストを設定する(Manifests/AndroidManifest.xml)

起動時のランチャーアクティビティであるMainActivityに、SplashThemeを適用します。遷移先のSecondActivityの宣言も忘れずに行いましょう。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:dist="https://schemas.android.com/apk/distribution"
    package="com.example.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity"
            android:theme="@style/SplashTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".SecondActivity"/>
    </application>

    <dist:module dist:instant="true" />
</manifest>

アプリを実行して確認する

それではアプリを実行してみましょう。実機のAndroidスマートフォンをPCに接続しているものとします。Android Studioでプロジェクト内のいずれかのアクティビティファイルを開き、ツールバーの「Run」(Androidアプリにスプラッシュ画面を実装する方法をわかりやすく解説)アイコンをクリックしてください。接続したモバイル端末を選択してアプリを起動すると、まずスプラッシュ画面が表示され、数秒後に自動的にメイン画面へ切り替わります。

Androidアプリにスプラッシュ画面を実装する方法をわかりやすく解説

Androidアプリにスプラッシュ画面を実装する方法をわかりやすく解説

補足:Android 12以降はSplashScreen APIの利用が推奨

本記事で紹介したThread.sleep()を使う方法は仕組みがシンプルで理解しやすい反面、メインスレッドを一時停止させる実装のため、実際の製品アプリではあまり推奨されません。Android 12(APIレベル31)以降ではOS標準でスプラッシュ画面が表示される仕様になっており、androidxの互換ライブラリ(androidx.core:core-splashscreen)を利用すれば、旧バージョンのAndroidとの互換性を保ちながら公式の手法で実装できます。新規のプロジェクトでは、こちらの採用も検討してみてください。

  1. Androidでマルチタスクを快適にこなす方法|便利な標準機能とおすすめアプリ

    Androidは非常に柔軟性の高いOSですが、モバイルデバイスの代名詞的存在でありながら、本格的なマルチタスク機能が弱いという課題を抱えてきました。小さな画面では作業しづらいと感じる人も多いでしょう。しかし実際には、標準機能や専用アプリを活用することで、今のAndroidはかつてないほど快適にマルチタスクが行えるデバイスへと進化しています。 この記事では、Androidデバイスでマルチタスクを効率的に行うために、すぐに使える標準機能とダウンロードしておきたいアプリをご紹介します。 「最近使ったアプリ」ボタンを活用する これはベテランのAndroidユーザーには当たり前の話かもしれませんが、「戻

  2. Androidでアプリの画面を固定(ピン留め)する方法

    友人にスマホを貸して特定のアプリだけを使ってもらいたいとき、他のアプリや個人情報まで勝手に見られるのは避けたいものです。Androidには「画面ピン留め」という便利な機能があり、これを有効にしておけば、相手は指定されたアプリ以外を操作できなくなります。この機能がオンになっている間、ユーザーはスマホの他の領域へ移動することができません。注意:この機能はすべてのAndroid端末で利用できるとは限りません。また、フルスクリーンジェスチャー(ナビゲーションジェスチャー)を使用している環境では、正常に動作しない場合があります。画面ピン留め機能を有効にする方法まず、スマホの設定画面を開きます。設定項目の