스플래시 화면이다. Splash API 이용.
//splashscreen
implementation 'androidx.core:core-splashscreen:1.0.0'
<activity
android:name=".ui.start.StartActivity"
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>
</activity>
<resources>
<!-- Base application theme. -->
<style name="Theme.Promise" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/pure_blue</item>
<item name="colorPrimaryVariant">@color/pure_blue</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/azure_radiance</item>
<item name="colorSecondaryVariant">@color/azure_radiance</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<style name="Theme.App.Starting" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/pure_blue</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_foreground</item>
<item name="postSplashScreenTheme">@style/Theme.Promise</item>
</style>
</resources>
앱의 시작 화면이 될 엑티비티에서 super.onCreate(savedInstanceState) 전에 installSplashScreen() 을 추가해 줍니다.
override fun onCreate(savedInstanceState: Bundle?) {
installSplashScreen().apply {
setKeepOnScreenCondition {
initObserver() // 로그인 여부 체크
true // 시작 화면을 화면에 유지할지 여부를 결정하기 위해 평가되는 조건
}
}
super.onCreate(savedInstanceState)
}
flase 일때 중간에 흰 화면이 지나감. (기본 화면을 빈 화면으로 놨음.)
private fun initObserver() {
if (startViewModel.isSignUp.hasActiveObservers().not()) {
startViewModel.isSignUp.observe(this@StartActivity) { isSignUp ->
val intent = Intent(
this@StartActivity,
if (isSignUp) PromiseCalendarActivity::class.java else SignUpActivity::class.java
)
startActivity(intent).also { finish() }
}
}
}
isSignUp 이 true (로그인이 되어 있다면 캘린더 화면으로 이동)
아니면 회원가입 화면으로 이동