[Android] Splash screen

panax·2022년 1월 15일
0

Android

목록 보기
8/16

Splash screen

스플래시 화면은 앱을 실행할 때 나타나는 화면으로 단순히 빈 화면을 나타낼 때 보다 앱 실행이 빨라보이는 효과가 있다.

스플래시 화면은 다음 조건에서 나타난다.

  • 콜드 스타드: 앱이 처음부터 시작되는 경우
  • 웜 스타드: 앱이 종료된 후 다시 시작

앱 시작 시간

구현

Android 12 이상부터는 해당 가이드를 통해서 스플래시 화면 구현이 가능하다.

Android 12 이전의 경우 여러 구현 방법이 있는데, 크게 2가지 방법이 있는 것 같다.

  • 액티비티 레이아웃을 이용한 방법
  • 앱 테마를 이용한 방법

액티비티 레이아웃을 이용한 방법

일반적인 액티비티처럼 레이아웃을 만들어 사용하는 방법이다.

  1. 레이아웃을 이용해 스플래시 화면을 구성
  2. 앱 실행 시 필요한 동작 (네트워크 등)을 처리
  3. 모든 작업이 완료되면 다음 액티비티를 호출

문제점은 액티비티가 실행돼야 레이아웃이 표시되기 때문에 실행되기 전에는 하얀 화면이 나타난다.

앱 테마를 이용한 방법

액티비티가 실행되기 전에 나타나는 하얀 화면을 바꾸고 싶으면 앱의 테마를 이용하면 된다.

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

    <item android:drawable="@color/white" />

    <item
        android:drawable="@drawable/ic_launcher_foreground"
        android:gravity="center" />

</layer-list>

스플래시 화면으로 사용한 드로워블 파일을 만든다.

layer-list 에 대한 내용은 공식 가이드를 참조

    <style name="Splash" parent="Theme.MaterialComponents.DayNight.NoActionBar">

        <item name="android:windowBackground">@drawable/drawable_splash</item>

    </style>

스플래시 테마를 생성하고 만들었던 드로워블 파일을 windowBackground 에 추가한다.

<activity
            android:name=".MainActivity"
            android:theme="@style/Splash">

마지막으로 AndroidManifest.xml 파일에서 스플래시 화면의 테마를 설정하면 끝

setTheme(R.style.Theme_AllTest)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_custom)

추가로 액티비티의 onCreate() 에서 setTheme() 를 사용해 원래 테마로 바꾸면 앱을 실행했을 때만 스플래시 화면이 보이게 된다.

단점으로는 드로워블 파일로 화면을 구성하기 때문에 애니메이션이나 복잡한 구조의 화면을 사용하기에는 힘든 것 같다.

profile
안드로이드 개발자

0개의 댓글