Splash android 12

나고수·2022년 3월 7일
0

1일1공부

목록 보기
14/67

참고1, 참고2, 공식dev
android 12 부터는 스플래시 화면이 강제되었다.

이유 : 사용자가 앱을 실행할 때 앱 프로세스가 실행되지 않거나(콜드 스타트) 활동이 만들어지지 않은 상태(웜 스타트)라면 다음 이벤트가 발생합니다. 스플래시 화면은 핫 스타트 중에 표시되지 않습니다.


핫스타트 일 때 스플래시 인척 하는 가짜 스플래시 띄우는 것 말고, 콜드스타트, 웜스타트 일 때 스플래시 뜨게 하는 걸 강제하고 싶었나봄

그렇기 때문에, 기본 스플래시 액티비티를 구현해 놨다면,
안드로이드가 강제하는 스플래시(따로 구현하지 않았다면, appTheme의 windowBackground와 앱아이콘 을 가지고 스플래시 화면이 만들어진다) + 개발자가 구현한 스플래시 화면 총 두개가 스플래시 화면으로 띄워진다.

개발자가 구현한 스플래시 화면과 appTheme의 windowBackground와 앱아이콘의 스타일이 비슷하다면 다행이지만(거의 그렇겠지만) , 스타일이 다르다면 사용자가 보기에 화면이 많이 이상하겠쥬

그래서 안드로이드 12 스플래시 api 에 대응 해보자

//api 추가 
//https://developer.android.com/jetpack/androidx/releases/core#core-splashscreen-1.0.0-beta01
 //splash
    implementation 'androidx.core:core-splashscreen:1.0.0-beta01'
//themes.xml
   <style name="Theme.App.Splash" parent="Theme.SplashScreen">
        <item name="windowSplashScreenBackground">@color/purple_200</item>
        #windowSplashScreenBackground > 스플래시 배경색상 (기존 스플래시가 png 등이 지원되던 것에 비해, 이 api 에서는 배경은 단색만 되는 것 같음)
        <item name="windowSplashScreenAnimatedIcon">@drawable/splash_icon</item>
        #windowSplashScreenAnimatedIcon 스플래시 중앙에 보여질 아이콘 
        <item name="windowSplashScreenAnimationDuration">200</item>
        #스플래시 화면이 닫히기 전에 표시되는 시간을 설정. 최대가 1000임 
        <item name="postSplashScreenTheme">@style/Theme.앱기본Theme</item>
        #스플래시가 닫히고 보여줄 app theme 앱의 기본 Theme을 적어주면댐.
    </style>
//manifest.xml
//application안에 만든 splash theme 지정 
        android:theme="@style/Theme.App.Splash"
//MainActivity.kt 
//onCreate() 안에 super.onCreate() 전에 설정 
  val splashScreen = installSplashScreen()
  super.onCreate(savedInstanceState)
 //퍼미션 설정은 여기서 해주면 대는듯???
  splashScreen.setOnExitAnimationListener { splashScreenView ->
  }

이렇게 하면 안드로이드 버전과 상관없이 안드로이드 api를 통해 만들어진 스플래시가 뜬다.

profile
되고싶다

0개의 댓글