Android Studio Navigation Drawer スプラッシュ画面の入れ方

2022/01/25に公開

やりたいこと

Navigation Drawer(ナビゲーションドロワー)のAndroidアプリを開発する際、スプラッシュ画面を入れたい。

Theme差し替え方式でやってみたけど、Themeが戻せなくてナビゲーションメニューの背景にスプラッシュ画像が表示されてしまったんで、Activity遷移方式でやってみよう。

用意するもの

  • windows10 PC
  • Android Studio(今回はAndroid Studio Arctic Fox 2020.3.1 patch 4 で実施)
  • スプラッシュ画面に設定したい適当な画像(今回はpngファイルを用意)

使う技術

  • java

参考にしたサイト

https://www.youtube.com/watch?v=-4WE8j1RCZs
https://qiita.com/hkusu/items/32b96eef9bbaafb2dea6
https://www.yukiiworks.com/archives/159

手順

1 Android Studioにてプロジェクトを作成する。

File>New>New Project から、Navigation Drawerのテンプレートを選択します。

今回はJavaでやります。

2 SplashScreen.javaを追加する。

MainActivity.javaと同じ階層にスプラッシュ画面用のActivityを新規追加します。

「Launcher Activity」にチェックを入れます。

SplashScreen.javaとactivity_splash_screen.xmlが追加されました。

3 activity_splash_screen.xmlを編集する。

app>res>layout>activity_splash_screen.xmlを開いて、imageViewを追加します。

「どの画像使うの?」って聞いてくるポップが表示されますので、

左上の「+」から「Import Drawables」を選択します。

ここで、用意しておいた画像ファイルを選択します。

Importが完了すると、使いたい画像が選べますので選択確定します。

TextViewも追加します。

右上の「Split」を選択してソースと画面イメージを同時に表示しています。

テキストサイズを大きくしたり、

中央寄せしたり、

表示するテキストの中身を変更したり、

画像との位置調整したりして、編集完了です。

activity_splash_screen.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SplashScreen">

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toTopOf="@+id/textView3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/splash_image" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="SplashScreen"
        android:textSize="50sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView2" />

</androidx.constraintlayout.widget.ConstraintLayout>

4 SplashScreen.javaを編集する。

新規追加した状態は以下のとおりです。

SplashScreen.java

package com.example.navigationdrawerproject;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class SplashScreen extends AppCompatActivity {

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

これを、以下のように追記します。

SplashScreen.java
package com.example.navigationdrawerproject;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;

public class SplashScreen extends AppCompatActivity {

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

        new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent = new Intent(SplashScreen.this, MainActivity.class);
                startActivity(intent);
		
		finish();
            }
        }, 1000);
    }
}

この状態でMake projectしてapkファイル作成して実機で試すなり、エミュレータ起動するなりして動作確認してください。

完成!

Discussion