본문 바로가기
Android/Concepts

Splash 화면 구현하기

by JuHy_ 2020. 5. 8.

Splash 화면이란?

앱을 실행하면 앱의 아이콘이나 간단한 이미지가 들어간 화면이 잠깐 뜨는 경우가 있다.

이 화면을 Splash 화면이라 하며, 어떤 앱인지를 나타내거나 앱을 실행하기 위한 준비를 하기 위해 사용하기도 한다.

 

구현 방법

일반적으로 Splash 화면을 액티비티로 만들어 일정 시간 후 MainActivity를 띄워주는 방법을 많이 사용한다.

 

이를 위해 app 우클릭 후 new - Activity - Empty Activity 를 눌러 새 Empty Activity를 생성하자.

그리고 원하는 화면으로 layout을 꾸며보자.

 

<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=".SplashActivity"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".MainActivity" />

</application>

이제 manifest로 가서 intent-filter 내용들을 MainActivity에서 SplashActivity로 옮겨 시작 액티비티를 바꿔주자.

SplashActivity는 TitleBar를 없애주기 위해 NoActionBar 테마를 지정해주었다.

 

package com.juhy.myapplication;

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

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class SplashActivity extends AppCompatActivity {

    Handler handler = new Handler();

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

        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(intent);
                finish();
            }
        }, 1000);
    }
}

마지막으로 SplashActivity에서 handler.postDelayed() 메소드를 통해 1초 뒤 MainActivity를 호출 후 종료하도록 한다.

 

 

MainActivity가 나타나기 전 1초동안 Splash 화면이 나타나는 것을 볼 수 있다.

 

 

Reference

[부스트코스]안드로이드 프로그래밍

https://www.edwith.org/boostcourse-android

'Android > Concepts' 카테고리의 다른 글

Page Sliding 구현하기  (0) 2020.05.08
Animation 사용법  (0) 2020.05.07
Thread Animation 만들기  (0) 2020.05.07
RecyclerView 사용법  (0) 2020.05.04
MediaRecorder로 Audio 녹음하기  (2) 2020.05.04