HapeLee 1 год назад
Родитель
Сommit
43b7b39ec6

+ 15 - 9
app/src/main/AndroidManifest.xml

@@ -39,7 +39,7 @@
             android:enabled="false"
             android:exported="true"
             android:icon="@mipmap/launcher0"
-            android:targetActivity=".ui.main.MainActivity">
+            android:targetActivity=".ui.welcome.SplashActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
@@ -51,7 +51,7 @@
             android:enabled="false"
             android:exported="true"
             android:icon="@mipmap/launcher1"
-            android:targetActivity=".ui.main.MainActivity">
+            android:targetActivity=".ui.welcome.SplashActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
@@ -64,7 +64,7 @@
             android:enabled="false"
             android:exported="true"
             android:icon="@mipmap/launcher2"
-            android:targetActivity=".ui.main.MainActivity">
+            android:targetActivity=".ui.welcome.SplashActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
@@ -77,7 +77,7 @@
             android:enabled="false"
             android:exported="true"
             android:icon="@mipmap/launcher3"
-            android:targetActivity=".ui.main.MainActivity">
+            android:targetActivity=".ui.welcome.SplashActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
@@ -90,7 +90,7 @@
             android:enabled="false"
             android:exported="true"
             android:icon="@mipmap/launcher4"
-            android:targetActivity=".ui.main.MainActivity">
+            android:targetActivity=".ui.welcome.SplashActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
@@ -103,7 +103,7 @@
             android:enabled="false"
             android:exported="true"
             android:icon="@mipmap/launcher5"
-            android:targetActivity=".ui.main.MainActivity">
+            android:targetActivity=".ui.welcome.SplashActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
@@ -116,16 +116,15 @@
             android:enabled="false"
             android:exported="true"
             android:icon="@mipmap/launcher6"
-            android:targetActivity=".ui.main.MainActivity">
+            android:targetActivity=".ui.welcome.SplashActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity-alias>
-        <!-- 主界面 -->
         <activity
-            android:name=".ui.main.MainActivity"
+            android:name=".ui.welcome.SplashActivity"
             android:alwaysRetainTaskState="true"
             android:enableOnBackInvokedCallback="true"
             android:exported="true">
@@ -134,6 +133,13 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+        <!-- 主界面 -->
+        <activity
+            android:name=".ui.main.MainActivity"
+            android:alwaysRetainTaskState="true"
+            android:enableOnBackInvokedCallback="true"
+            android:exported="true">
+        </activity>
         <activity
             android:name=".ui.welcome.WelcomeActivity"
             android:enableOnBackInvokedCallback="true"

+ 0 - 10
app/src/main/java/io/legato/kazusa/ui/main/MainActivity.kt

@@ -109,16 +109,6 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
 
-        if (LocalConfig.isFirstOpenApp) {
-            startActivity<WelcomeActivity>()
-            finish()
-            return
-        }
-
-        if (savedInstanceState == null && getPrefBoolean(PreferKey.defaultToRead)) {
-            startActivity<ReadBookActivity>()
-        }
-
         if (savedInstanceState != null) {
             pagePosition = savedInstanceState.getInt("currentPagePosition", 0)
         }

+ 51 - 0
app/src/main/java/io/legato/kazusa/ui/welcome/SplashActivity.kt

@@ -0,0 +1,51 @@
+package io.legato.kazusa.ui.welcome
+
+import android.annotation.SuppressLint
+import android.content.Intent
+import android.os.Bundle
+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 io.legato.kazusa.base.BaseActivity
+import io.legato.kazusa.constant.PreferKey
+import io.legato.kazusa.databinding.ActivitySplashBinding
+import io.legato.kazusa.help.config.LocalConfig
+import io.legato.kazusa.ui.book.read.ReadBookActivity
+import io.legato.kazusa.ui.main.MainActivity
+import io.legato.kazusa.utils.getPrefBoolean
+import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
+
+@SuppressLint("CustomSplashScreen")
+class SplashActivity : BaseActivity<ActivitySplashBinding>() {
+    override val binding by viewBinding(ActivitySplashBinding::inflate)
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+        window.exitTransition = MaterialSharedAxis(MaterialSharedAxis.Z, /* forward= */ true)
+        window.reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, /* forward= */ false)
+
+        if (LocalConfig.isFirstOpenApp) {
+            startActivity(
+                Intent(this, WelcomeActivity::class.java),
+                ActivityOptionsCompat.makeSceneTransitionAnimation(this).toBundle()
+            )
+            finish()
+            return
+        }
+
+        if (getPrefBoolean(PreferKey.defaultToRead)) {
+            startActivity(Intent(this, ReadBookActivity::class.java),
+                ActivityOptionsCompat.makeSceneTransitionAnimation(this).toBundle()
+            )
+            finish()
+            return
+        }
+
+        startActivity(Intent(this, MainActivity::class.java),
+            ActivityOptionsCompat.makeSceneTransitionAnimation(this).toBundle())
+        finish()
+    }
+}
+

+ 6 - 0
app/src/main/res/layout/activity_splash.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+</androidx.constraintlayout.widget.ConstraintLayout>