diff --git a/app/build.gradle b/app/build.gradle index 631d91956..b5be5cd69 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -331,4 +331,6 @@ dependencies { implementation libs.androidx.datastore.preferences implementation libs.androidx.palette + implementation libs.androidx.core.splashscreen + implementation libs.androidx.startup.runtime } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a1a819a42..04519317f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -125,8 +125,8 @@ diff --git a/app/src/main/java/io/legato/kazusa/ui/welcome/SplashActivity.kt b/app/src/main/java/io/legato/kazusa/ui/welcome/SplashActivity.kt index ad901776b..13d6459f4 100644 --- a/app/src/main/java/io/legato/kazusa/ui/welcome/SplashActivity.kt +++ b/app/src/main/java/io/legato/kazusa/ui/welcome/SplashActivity.kt @@ -3,11 +3,8 @@ package io.legato.kazusa.ui.welcome import android.annotation.SuppressLint import android.content.Intent import android.os.Bundle -import android.transition.Fade import androidx.core.app.ActivityOptionsCompat -import androidx.core.content.ContextCompat.startActivity -import androidx.core.view.postDelayed -import com.google.android.material.transition.platform.MaterialSharedAxis +import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import io.legato.kazusa.base.BaseActivity import io.legato.kazusa.constant.PreferKey import io.legato.kazusa.databinding.ActivitySplashBinding @@ -22,40 +19,32 @@ class SplashActivity : BaseActivity() { override val binding by viewBinding(ActivitySplashBinding::inflate) override fun onCreate(savedInstanceState: Bundle?) { + val splashScreen = installSplashScreen() super.onCreate(savedInstanceState) + splashScreen.setKeepOnScreenCondition { true } + routeNext() + } - window.exitTransition = Fade().apply { - duration = 300 + private fun routeNext() { + when { + LocalConfig.isFirstOpenApp -> { + go(WelcomeActivity::class.java) + } + getPrefBoolean(PreferKey.defaultToRead) -> { + go(MainActivity::class.java) + go(ReadBookActivity::class.java) + } + else -> { + go(MainActivity::class.java) + } } - window.reenterTransition = Fade().apply { - duration = 300 - } - - if (LocalConfig.isFirstOpenApp) { - startActivity( - Intent(this, WelcomeActivity::class.java), - ActivityOptionsCompat.makeSceneTransitionAnimation(this).toBundle() - ) - finish() - return - } - - if (getPrefBoolean(PreferKey.defaultToRead)) { - startActivity( - Intent(this, MainActivity::class.java), - ActivityOptionsCompat.makeSceneTransitionAnimation(this).toBundle() - ) - startActivity( - Intent(this, ReadBookActivity::class.java), - ActivityOptionsCompat.makeSceneTransitionAnimation(this).toBundle() - ) - finish() - return - } - - startActivity(Intent(this, MainActivity::class.java), - ActivityOptionsCompat.makeSceneTransitionAnimation(this).toBundle()) finish() } -} + private fun go(target: Class<*>) { + startActivity( + Intent(this, target), + ActivityOptionsCompat.makeSceneTransitionAnimation(this).toBundle() + ) + } +} diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml index 77d9ef65f..c5c536cee 100644 --- a/app/src/main/res/layout/activity_splash.xml +++ b/app/src/main/res/layout/activity_splash.xml @@ -1,6 +1,8 @@ - + android:layout_height="match_parent" + android:background="?attr/colorSurface"> \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 555ccb446..cbac8dbdd 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -13,6 +13,12 @@ @style/Widget.Material3Expressive.BottomNavigationView + +