What is Splash Screens?
- 스플래시 스크린이란 → 앱 화면 실행시 잠깐 이미지나 앱 로고를 나타내는 화면입니다.
- 위의 스플래시 스크린을 통해서 로고를 나타낼때 다른 작업을 수행할 수 있습니다 (예를 들어 자동 로그인)
스플래시 스크린을 시작하기전.. 앱 시작 방법 설명
- cold start
- warm start
- hot start
스타팅 타입은 위처럼 3가지가 있는데 이들은 서로 다른 시작 포인트를 가지고있습니다.
- Cold Start
- 앱 로드 및 시작
- 시작 직후 앱의 빈 시작 창 표시
- 앱 프로세스 만들기
- Warm Start
- 앱을 종료후에 다시 시작하는 때 onCreate() 가 다시 호출될때 대부분 Warm Start.
- Hot Start
- 어플리케이션의 모든 활동이 아직 메모리위에 위치하고있으며 시스템이 활동을 포그라운드로 가져오기만 하면 되는 상태
Splash Screen 만들어보기
위 화면을 만드는데는 2가지 방법이 존재합니다.
- Splash Screen만을 표현해주는 Activity를 사용하는것
- 안드로이드 12 이상부터는 Splash Api를 사용하는게 권장됩니다.Splash Screen Api를 사용하는것 입니다.
- 안드로이드 시스템에서 앱의 상태에 따라 Splash화면을 제어해주는 Splash Api가 동작을 하지만, Splash Api를 사용하지 않으면 어플리케이션 시작 방법에 따라 대응하기가 어려워 지고, 여러 activity를 사용하게 되면 같은 기능을 중복 사용하게 되어 UI디자인이 안좋아 질 수 있습니다.
App Start별 Splash Screens 동작 여부
- Splash Screen은 Cold Start, Warm Start에서는 작동하지만 Hot Start에서는 절대 작동하지 않는다. 하지만 위의 동영상은 Hot Start에서도 작동함
- When a user launches an app while the app's process is not running (a cold start) or the Activity has not been created (a warm start), the following events occur. (The splash screen is never shown during a hot start.)
실제 사용한 Splash Screens 만들기
(Spash Screens Api를 사용한 방법)
- implementation
//SplashScreens 2022-07-29 기준
implementation 'androidx.core:core-splashscreen:1.0.0'
- Theme 작성
- Theme.xml 파일 에 Splash Screens에서 사용할 Theme을 정의해줍니다.
<style name="Theme.Splash" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/black</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/app_logo_workout</item>
<item name="postSplashScreenTheme">@style/Base.Theme.Calefit</item>
</style>
- 각각 필요한 Item 설명
- windowSplashScreenBackground 스플래시 화면의 배경색을 지정해줄 수 있다
- windowSplashScreenAnimatedIcon 스플래시에 보일 아이콘 을 지정해 줄 수 있다 (특히 Action Vector Drawable 또한 지정 가능)
- postSplashScreenTheme 스플래시가 끝난 뒤 보일 화면의 테마 (보통을 우리가 메인화면에서 쓸 테마를 지정해준다)
- 다른 메서드가 필요하다면 다음 링크를 참고
- Manifest 작성
<activity
android:name=".ui.login.LoginActivity"
android:exported="true"
android:theme="@style/Theme.Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Splash Theme을 적용시키기 위해서 Manifest에 적용 (android:theme에 만든 splash theme 파일 이름을 넣어준다)
- Activity 에서 적용
override fun onCreate(savedInstanceState: Bundle?) {
installSplashScreen()
super.onCreate(savedInstanceState)
}
- 꼭 super.onCreate 위에 선언이 되어야 한다.
- 주의사항
- Emulator에서 돌릴시 Run App 버튼을 눌렀을 경우에는 보이지 않을 경우가 크다. 그렇기 때문에 Warm Start를 통해서 실행해보면 잘 동작을 하는지 알 수 있기에 Emulator에서는 Warm Start로 Splash Screens를 확인해서 동작하는지 확인하자.
- 버전별 호환
728x90
최근댓글