개발린생

Android 스플래시 화면 개요 및 배경 색상 설정 방법 본문

Dev Lab ✧.·˚/Android & iOS

Android 스플래시 화면 개요 및 배경 색상 설정 방법

김블루 2025. 1. 7. 21:51

안드로이드 스플래시 화면은 앱이 실행될 때 가장 먼저 표시되는 화면이다.

기본 스플래시 화면은 Android 12(API 31) 부터 적용되었으며, 예전에 안드로이드 앱을 개발할 때는 기본으로 제공되는 스플래시 화면이 없었기 때문에 개발자가 직접 구현해야했다.

 

기본 스플래시 화면이 제공되지만 별도의 스플래시 화면을 직접 구현하는 경우도 많다.

복잡한 애니메이션, 앱의 고유한 디자인 적용, 네트워크 상태 체크, 데이터 로드 등 상태 로직이 들어가는 등 커스텀 요구사항이 있는 경우에는 스플래시 화면을 직접 구현한다.


스플래시 화면에서 실행되는 기능

  • UI 초기화
  • 앱 데이터 준비
  • 리소스 로드
  • 화면 전환 등

스플래시 화면 설계 시 고려사항

  • 사용자 경험을 저해하지 않도록 간결한 화면으로 구성
  • 스플래시 화면에 과도한 작업을 넣지 말고, 앱 실행 후 백그라운드에서 작업을 이어가도록 설계
  • 스플래시 화면이 앱의 전반적인 테마 및 스타일과 조화를 이루도록 구성

이번에 새로 생성한 프로젝트에서는 기본 스플래시 화면을 사용하기로 했다.

아직 스플래시에서 실행해야하는 상태 로직이 없기 때문에 기본 스플래시에서 제공하는 제한적인 디자인으로 적용해도 충분하다.

 

Android 기본 스플래시 화면

첫 번째 화면을 두번째 화면으로 변경하려고 한다.

첫번째 화면에서 보이는 스플래시 화면은 Android Studio에서 프로젝트 생성 후 앱 아이콘까지 적용하면 첫번째 화면처럼 적용되어있다.

 

이미 앱 아이콘을 적용하며 첫 번째 화면으로 보여지고 있기 때문에 스플래시 화면의 배경색만 변경하면 된다.


기본 생성 코드

프로젝트 생성 후 코드를 변경하지 않은 상태라면 기본 생성 코드는 아래 코드와 유사할 것이다.

 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApp"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:theme="@style/Theme.MyApp">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

 

values/themes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.MyApp" parent="android:Theme.Material.Light.NoActionBar" />
</resources>

 

themes 파일에 정의되어있는 테마를 AndroidManifest에서 앱과 Activity 적용하도록 되어있다.

우리는 여기서 themes 파일에 Theme.MyApp 이름의 스타일을 수정해줄 것이다. (MyApp 프로젝트명에 따라 다름)


스플래시 배경 색상 적용

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.MyApp" parent="android:Theme.Material.Light.NoActionBar">
        <!-- 스플래시 배경 색상 -->
        <item name="android:windowSplashScreenBackground">@color/main</item>
    </style>
</resources>
<item name="android:windowSplashScreenBackground">@color/main</item>

이 구문을 추가하면 스플래시 화면 배경 색상은 해당 색상코드로 적용된다.

color 파일에 정의된 색상코드 말고 #000000와 같은 색상코드를 바로 적용해도 된다.

 

최소 지원 버전에 따른 파일 분기 처리

만약 minSdk가 30 이하라면 위와 같이 추가한 코드에 빨간줄이 발생할 것이다.

왜냐하면 windowSplashScreenBackground는 Android 12(API 31)부터 적용되었기 때문에 30이하는 위 코드가 적용할 수 없다.

 

이런 경우에는 해당 버전에 따라 테마 파일이 적용될 수 있도록 파일을 분리하여 적용한다.

  • values/themes.xml : 기본으로 참조하는 테마 파일
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.MyApp" parent="android:Theme.Material.Light.NoActionBar" />
</resources>

 

  • values-v31/themes.xml : API 31 이상일 경우 참조하는 테마 파일
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.MyApp" parent="android:Theme.Material.Light.NoActionBar">
        <!-- 스플래시 배경 색상 -->
        <item name="android:windowSplashScreenBackground">@color/main</item>
    </style>
</resources>

💬 제한적인 기본 스플래시 화면

기존에 스플래시 화면을 직접 구현하던 시절에는 화면에서 특정 기능을 처리하거나, 단순히 몇 초 뒤에 메인 화면으로 이동하도록 처리하는 경우가 많았다. 이러한 점에서, Android 기본 스플래시 화면은 충분히 활용 가치가 있다고 생각한다.

물론, 커스터마이징에 제약이 있긴 하지만, 앱 로딩 시간 동안 사용자에게 디자인된 화면을 간결하게 보여주는 데에는 충분히 적합한 것 같다.

이번에는 단순히 배경 색상을 변경해봤지만 이후에 스플래시 화면에서 제공하는 기능을 자세히 다뤄볼 예정이다.