[Android Studio]Splash 화면 만들기

Runtime Error·2021년 2월 24일
0

Android Studio

목록 보기
1/4

Splash Screen이란?

이미지나 로고, 현재 버전의 소프트웨어를 포함한 그래픽 요소를 보여주는 화면으로 보통 프로그램이 실행되고 있을 때 나오는 화면이다.

Splash Screen의 목적

안드로이드 앱을 시작할 때 약간의 시간이 소요되는데 이러한 시간동안 아무것도 없는 빈 화면 보다는 사용자가 지루하지 않도록 또는 이 빈 화면을 이용하여 어플의 홍보를 위해 사용하는 것이 splash 화면의 목적이다.

지금까지 봐왔던 splash 화면 구현 방법을 보면 레이아웃 파일을 변경하고 n초 후에 메인화면으로 넘기는 방식이다. 하지만 splash 화면의 정의와 목적처럼 어플 로딩시간에 보여주는 화면이기 때문에 n초 동안 보여주는 화면을 구현하는 것이 아닌 로딩하는 동안 보여주는 화면을 구현하여야 한다.

drawble 폴더에 background_splash.xml 파일 만들기

splash 화면의 배경과 이미지를 설정해준다.
본인은 drawble 폴더에 splash.png 파일을 추가하여 배경이미지를 넣어줬다.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/splash"/>
</layer-list>

values/style.xml 파일에 style 추가

xml 파일을 테마에 추가한다.

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    ...
    <!-- Customize your theme here. -->
    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
    </style>
</resources>

SplashActivity.java 클래스 생성

splash 화면이 끝나면 메인화면으로 이동한다.

package com.example.everyday;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
        startActivity(intent);
        finish();
    }
}

manifests/AndroidManifest.xml 수정

manifests 파일에 splash화면이 가장 먼저 실행되도록 수정해준다.
이때 테마도 @style/SplashTheme로 수정해준다.

...
android:theme="@style/Theme.EveryDay">
        <activity android:name=".ProfileActivity"/>
        <activity android:name=".LoginActivity"/>
        <activity android:name=".RegisterActivity" />
        <activity android:name=".MainActivity" />
        <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>
...
profile
Hello World

0개의 댓글