프로그래밍/android

[android] 안드로이드 빠른 스플래시 처리 (#splash)

-샤리- 2021. 1. 15. 10:17

앱을 처음 켜면 잠시동안 하얗게 나오는 순간이 있다. 혹시라도 폰에 부하가 걸려서 조금이라도 버벅이면 하얀 화면이 꽤나 오랫동안 노출되기도 한다. 그러다가 스플래시는 보이지도 않고 화면이 바로 넘어갈 때도 가끔 있다.

 

대부분 SplashActivity의 onCreate()안에 setContentView(R.layout.activity_splash)를 넣을 경우 이런 현상이 발생하게 되는데, AndroidManifest에 style을 적용하면 이 같은 현상을 방지할 수 있다.

 

 

res/drawable/splash.xml

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

    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/ic_launcher"/>
    </item>
</layer-list>

 

styles.xml

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/splash</item>
</style>

 

AndroidManifest.xml

<activity android:name=".ui.splash.SplashActivity"
            android:theme="@style/SplashTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>