본문 바로가기
앱개발/Java - AndroidStudio

SplashScreen API 사용하여 스플래시 액티비티 화면 만들기 - 로고 띄우기

by zldn 2025. 8. 10.

Splash Activity의 사용 개요

안드로이드 앱을 만들 때 사용자 경험을 높이기 위해 가장 먼저 보이는 스플래시 스크린은 굉장히 중요하다고 생각한다. 자신의 어플 로고나 이름을 띄워 앱의 존재감을 되새길 수 있는 중요포인트라고 생각한다. 나는 스플래시 화면을 SplashScreen API를 사용하여 화면 구현을 해보고자 했다. 

목표

- 앱 실행 시 로고 아이콘이 보이도록 스플래시 화면 구성

- SplashScreen API를 활용하여 SplashActivity 생성을 따로 하지 않으며 MainActivity 하나로 스플래시 구성

 

구현 순서

1️⃣ Splash 이미지 추가

- res/drawable 폴더에 splash_icon.png와같은 아이콘 이미지를 추가한다.
- 나의 경우에는 아직 정해진 로고나 어플명이 없어서 제일 좋아하는 과일은 포도의 사진으로 대체했다. 

 

2️⃣ colors.xml에서 컬러 정의

- colors.xml에서 자신이 사용할 색상을 정의해두면 변수명으로 색상을 사용하기에 용이하다.

<resources>
    <color name="white">#FFFFFF</color>
    <color name="primary">#017356</color>
</resources>

 

3️⃣ themes.xml 설정

<resources>
    <!-- Splash 테마 -->
    <style name="Theme.Coffee" parent="Theme.Material3.DayNight.NoActionBar">
        <item name="windowSplashScreenBackground">@color/white</item>
        <item name="windowSplashScreenAnimatedIcon">@drawable/splash_icon</item>
        <item name="windowSplashScreenIconBackgroundColor">@color/white</item>
        <item name="postSplashScreenTheme">@style/Theme.Coffee.App</item>
    </style>

    <!-- 앱의 실제 테마 -->
    <style name="Theme.Coffee.App" parent="Theme.Material3.DayNight.NoActionBar">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorOnPrimary">@color/white</item>
    </style>
</resources>

- Theme.Coffee는 런처에서 앱을 켤 때 가장 먼저 적용되는 테마이다.

- 여기에서 windowSplashScreen* 세트가 OS 스플래시의 룩을 결정한다.

- postSplashScreenTheme은 스플래시가 끝나고 액티비티가 사용할 실제테마를 의미하며 이때 Theme.Coffee.App이 실행되도록 작성했다.

포인트: Manifest에서는 Theme.Coffee만 걸어두면 스플래시동안은 Theme.Coffeerk 실행되고 끝나고는 자동으로 Theme.Coffee.App으로 스위칭되어 실행된다.

 

4️⃣ build.gradle(:app)

- SplashScreenAPI 이용을 위해 dependencies를 추가해줘야 한다.

android {
    compileSdk 34

    defaultConfig {
        applicationId "com.zloow.coffee"
        minSdk 21
        targetSdk 34
    }
}

dependencies {
    implementation "androidx.core:core-splashscreen:1.0.1"
}

 

5️⃣ AndroidManifest.xml

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

- 런처가 Manifest를 실행할 때 적용할 전체 테마로 Theme.Coffee를 걸어둔다.

- 그러면 OS가 스플래시를 그리고 스플래시 종료 시 자동으로 Theme.Coffee.App으로 넘어가게 된다.

 

- <activity...> 의 의미:

-> 이 안드로이드 앱에 MainActivity라는 화면이 존재한다고 OS에 등록하는 것

-> Activity를 이렇게 Manifest에 등록을 해야만 시스템이 인식하고 실행이 가능하다.

- <intent-filter>...</intent-filter>
-> 이 액티비티가 어떤 Intent를 처리할 수 있는지 지정

-> 여기서 쓰인 건 앱 진입점을 정의하는 필수세트이다.

 

 

6️⃣ MainActivity.java 설정

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.splashscreen.SplashScreen;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // 스플래시 화면 활성화
        SplashScreen.installSplashScreen(this);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

- 이 액티비티에서는 SplahScreen API를 쓸거에요 라는 선언을 한다.

- 이 시점에는 os가 이미 스플래시를 보여주고 있고 setCountView()로 메인 레이아웃을 붙이면 첫 프레임이 그려지는 순간 스플래시가 자연스럽게 사라진다.

 

앱 실행과정

: 런처 -> Manifest -> Splash -> Activity

 

마무리

SplashScreen API를 활용하니 MainActivity로만으로도 자연스럽게 전환을 할 수 있어서 좋았다. 간단한 로고 이미지만 있어도 완성도 높은 시작화면을 만들 수 있다는 점이 장점이라고 생각한다.