경험의 기록

평소에 스플래시를 만들때에

class SplashActivity : AppCompatActivity() {
    val SPLASH_VIEW_TIME: Long = 1000 // 1초간 스플래시 화면을 보여줌

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        Handler().postDelayed({
            startActivity(Intent(this, LoginActivity::class.java))
            finish()
        }, SPLASH_VIEW_TIME)
    }
}

이런식으로 postDelayed를 이용해서 만들어주곤 했다.

하지만 이렇게 하게되면 스플래시는 로딩 되는 동안 띄우기 위해 만드는 건데 괜히 시간만 잡아먹고 그 후에 로딩이 되는 비효율적인 방식이 되어버린다.

 

그래서 찾아보던중 테마를 이용하여 구현하는 방식을 알게 되었다.

 

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

스플래시 화면으로 사용할 xml을 만들어준다.

 

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

스타일에서 아까 만든 화면을 연결해주고

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

매니패스트에서 액티비티의 테마를 만든 스타일로 지정해준다.

 

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        setTheme(R.style.AppTheme)
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

그 후 액티비티가 생성되어 onCreate이 호출되었을 때, 테마를 기본 테마로 바꿈으로써 효율적인 스플래시 화면을 구성할 수 있다.

 

github.com/HanYeop/AndroidStudio-Practice/tree/master/SplashTest

 

HanYeop/AndroidStudio-Practice

AndroidStudio Practice. Contribute to HanYeop/AndroidStudio-Practice development by creating an account on GitHub.

github.com

 

참조 : velog.io/@pish11010/Android-Splash-Screen-%EA%B5%AC%ED%98%84

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading