본문 바로가기
Android Kotlin

Android Studio Kotlin Splash화면 구성하기 installSplashScreen

by 히예네 2023. 9. 30.
728x90
반응형

231003 ver 

스플래쉬 화면을 구성할 때 종래 자주쓰는 방법은

1. 특정 xml layout을 꾸미기

2. 특정 theme 꾸미기

둘 중 하나로 꾸민 다음 Handler를 이용하여 delay를 주는것이다.

 

그러나 올 초부터 상기 2개 말고 installSplashScreen로 스플래쉬화면 객체를 반환하여 이용하는 방법을 추천하고있다. 

https://developer.android.com/guide/topics/ui/splash-screen/migrate?hl=ko 

 

기존 스플래시 화면 구현을 Android 12 이상으로 이전  |  Android 개발자  |  Android Developers

기존 스플래시 화면 구현을 Android 12 이상으로 이전 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이전에 Android 11 이하에서 맞춤 스플래시 화면을 구현한

developer.android.com

 

1. 의존성 추가 kotlin script

dependencies {
   implementation ("androidx.core:core-splashscreen:1.0.0-alpha01")
}

 

2. 테마 만들기

<style name="Theme.App.Starting" parent="Theme.SplashScreen">
   <item name="windowSplashScreenBackground">@color/black</item>
   //스플래쉬의 바탕화면을 말한다. 
   
   <item name="windowSplashScreenAnimatedIcon">@mipmap/logo</item>
   //스플래쉬에 들어갈 아이콘을 지정한다. mipmap으로 해야 깨지지 않는다. 
   
   <item name="windowSplashScreenAnimationDuration">1000</item> 
   //duration을 지정한다. 나는 1초
   
   <item name="postSplashScreenTheme">@style/Theme.Material3.DayNight.NoActionBar</item>
   //스플래쉬의 테마를 지정한다. 나는 노액션바
</style>

mipmap은 알아서 만들기

 

3. 매니페스트에 스플래쉬화면에 테마 지정하기

  android:theme="@style/Theme.App.Starting"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:theme="@style/Theme.App.Starting">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

4. MainActivity에서 스플래쉬 화면 객체에게 일시키기! 

class MainActivity : AppCompatActivity() {

    private val splashScreen : SplashScreen by lazy { installSplashScreen() } //Splash API
  

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

        splashScreen //스플래쉬를 킨 다음 MainActivity의 root를 그린다.
        setContentView(binding.root)

    }//onCreate method
728x90
반응형