[Android] Splash Screen

박주호·2022년 1월 25일
1
post-thumbnail

💁‍♂️ Splash Screen란

안드로이드 앱을 구현하면 Activity와 Fragment를 사용하는데 뷰가 setContentView가 되기 전까지
빈 화면을 띄우는걸 볼 수 있다. 뷰가 그려지기 전까지 잠시 나오는 화면을 Splash Screen이라고 한다.
여러 블로그를 검색해보니 여러 방법으로 구현할 수 있지만 공통적으로 말하는 것은 사용자가 불편하지 않을만큼 보여주라는 것이다.
안그래도 바쁜데 의미없이 시간을 잡아먹는다면 사용자 입장에서 좋은 서비스라고 느끼기 어려울 것이다.

🧑‍💻 구현 방법

구현방법은 간단하다.

splash.xml 구현 → 테마 추가 → 테마 설정 → 진입화면에서 테마 복구

📍 splash.xml 구현

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

📍 테마 추가

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

📍 테마 설정

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.pachuho.sleepAlram">

    <application
    	. . .>
        <activity
            android:name=".MainActivity"
            android:theme="@style/SplashTheme"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

📍 진입화면에서 테마 복구

override fun onCreate(savedInstanceState: Bundle?) {
        setTheme(R.style.Theme_SleepAlram)
        super.onCreate(savedInstanceState)
        . . .
    }

유의사항

  1. xml 생성 시 item 항목에 bitmap으로 구현 시 해당 이미지가 보여지지 않는 이슈가 있을 수 있다.
    (+ android:src말고 drawble사용)
  2. 테마 복구 시 상속받기 전(onCreate가 불러오기 전)에 setTheme처리해준다.

결과물

참고

Splash Screen 구현하기

profile
항상 배우려는 자세로

1개의 댓글

comment-user-thumbnail
2022년 6월 26일

좋은 정보 감사합니다!

답글 달기