Android Studio Navigation Drawer スプラッシュ画面の入れ方
やりたいこと
Navigation Drawer(ナビゲーションドロワー)のAndroidアプリを開発する際、スプラッシュ画面を入れたい。
Theme差し替え方式でやってみたけど、Themeが戻せなくてナビゲーションメニューの背景にスプラッシュ画像が表示されてしまったんで、Activity遷移方式でやってみよう。
用意するもの
- windows10 PC
- Android Studio(今回はAndroid Studio Arctic Fox 2020.3.1 patch 4 で実施)
- スプラッシュ画面に設定したい適当な画像(今回はpngファイルを用意)
使う技術
- java
参考にしたサイト
手順
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」を選択してソースと画面イメージを同時に表示しています。
テキストサイズを大きくしたり、
中央寄せしたり、
表示するテキストの中身を変更したり、
画像との位置調整したりして、編集完了です。
<?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を編集する。
新規追加した状態は以下のとおりです。
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);
}
}
これを、以下のように追記します。
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