diff --git a/VisualNovel/app/src/main/AndroidManifest.xml b/VisualNovel/app/src/main/AndroidManifest.xml
index 0b6ae22..b2243ae 100644
--- a/VisualNovel/app/src/main/AndroidManifest.xml
+++ b/VisualNovel/app/src/main/AndroidManifest.xml
@@ -2,6 +2,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:name=".ui.splash.SplashActivity"
+ android:exported="true" >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/Chat/ChatActivity.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/Chat/ChatActivity.kt
new file mode 100644
index 0000000..a07a03b
--- /dev/null
+++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/Chat/ChatActivity.kt
@@ -0,0 +1,65 @@
+package com.remax.visualnovel.ui.Chat
+
+
+import androidx.activity.viewModels
+import androidx.lifecycle.Observer
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.alibaba.android.arouter.launcher.ARouter
+import com.remax.visualnovel.app.base.BaseBindingActivity
+import com.remax.visualnovel.utils.Routers
+import com.remax.visualnovel.utils.StatusBarUtils
+import com.pengxr.modular.eventbus.generated.events.EventDefineOfUserEvents
+import com.remax.visualnovel.databinding.ActivityActorChatBinding
+import com.remax.visualnovel.event.model.OnLoginEvent
+import com.remax.visualnovel.extension.launchWithRequest
+import com.remax.visualnovel.ui.main.MainViewModel
+import dagger.hilt.android.AndroidEntryPoint
+
+
+
+@AndroidEntryPoint
+@Route(path = Routers.CHAT)
+class ChatActivity : BaseBindingActivity() {
+
+ private val mViewModel by viewModels()
+
+ override fun initView() {
+ StatusBarUtils.setStatusBarAndNavBarIsLight(this, false)
+ StatusBarUtils.setTransparent(this)
+
+ with(binding) {
+
+ }
+ }
+
+ override fun initData() {
+
+ }
+
+ private val loginObserver = Observer {
+ launchWithRequest({
+ //TODO - business handling for login events
+ if (it?.isLogin() == true) {
+
+ } else {
+
+ }
+ })
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ EventDefineOfUserEvents.onLoginStatusChanged().removeObserver(loginObserver)
+ }
+
+
+ companion object {
+ fun start() {
+ ARouter.getInstance()
+ .build(Routers.CHAT)
+ .navigation()
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/checkin/CheckInActivity.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/checkin/CheckInActivity.kt
new file mode 100644
index 0000000..c2da8d4
--- /dev/null
+++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/checkin/CheckInActivity.kt
@@ -0,0 +1,65 @@
+package com.remax.visualnovel.ui.checkin
+
+
+import androidx.activity.viewModels
+import androidx.lifecycle.Observer
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.alibaba.android.arouter.launcher.ARouter
+import com.remax.visualnovel.app.base.BaseBindingActivity
+import com.remax.visualnovel.utils.Routers
+import com.remax.visualnovel.utils.StatusBarUtils
+import com.pengxr.modular.eventbus.generated.events.EventDefineOfUserEvents
+import com.remax.visualnovel.databinding.ActivityCheckinBinding
+import com.remax.visualnovel.event.model.OnLoginEvent
+import com.remax.visualnovel.extension.launchWithRequest
+import com.remax.visualnovel.ui.main.MainViewModel
+import dagger.hilt.android.AndroidEntryPoint
+
+
+
+@AndroidEntryPoint
+@Route(path = Routers.CHECK_IN)
+class CheckInActivity : BaseBindingActivity() {
+
+ private val mViewModel by viewModels()
+
+ override fun initView() {
+ StatusBarUtils.setStatusBarAndNavBarIsLight(this, false)
+ StatusBarUtils.setTransparent(this)
+
+ with(binding) {
+
+ }
+ }
+
+ override fun initData() {
+
+ }
+
+ private val loginObserver = Observer {
+ launchWithRequest({
+ //TODO - business handling for login events
+ if (it?.isLogin() == true) {
+
+ } else {
+
+ }
+ })
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ EventDefineOfUserEvents.onLoginStatusChanged().removeObserver(loginObserver)
+ }
+
+
+ companion object {
+ fun start() {
+ ARouter.getInstance()
+ .build(Routers.CHECK_IN)
+ .navigation()
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/discussion/DiscussionActivity.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/discussion/DiscussionActivity.kt
new file mode 100644
index 0000000..eca4d17
--- /dev/null
+++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/discussion/DiscussionActivity.kt
@@ -0,0 +1,66 @@
+package com.remax.visualnovel.ui.discussion
+
+
+import androidx.activity.viewModels
+import androidx.lifecycle.Observer
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.alibaba.android.arouter.launcher.ARouter
+import com.remax.visualnovel.app.base.BaseBindingActivity
+import com.remax.visualnovel.utils.Routers
+import com.remax.visualnovel.utils.StatusBarUtils
+import com.pengxr.modular.eventbus.generated.events.EventDefineOfUserEvents
+import com.remax.visualnovel.databinding.ActivityCheckinBinding
+import com.remax.visualnovel.databinding.ActivityDiscussionBinding
+import com.remax.visualnovel.event.model.OnLoginEvent
+import com.remax.visualnovel.extension.launchWithRequest
+import com.remax.visualnovel.ui.main.MainViewModel
+import dagger.hilt.android.AndroidEntryPoint
+
+
+
+@AndroidEntryPoint
+@Route(path = Routers.DISCUSSION)
+class DiscussionActivity : BaseBindingActivity() {
+
+ private val mViewModel by viewModels()
+
+ override fun initView() {
+ StatusBarUtils.setStatusBarAndNavBarIsLight(this, false)
+ StatusBarUtils.setTransparent(this)
+
+ with(binding) {
+
+ }
+ }
+
+ override fun initData() {
+
+ }
+
+ private val loginObserver = Observer {
+ launchWithRequest({
+ //TODO - business handling for login events
+ if (it?.isLogin() == true) {
+
+ } else {
+
+ }
+ })
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ EventDefineOfUserEvents.onLoginStatusChanged().removeObserver(loginObserver)
+ }
+
+
+ companion object {
+ fun start() {
+ ARouter.getInstance()
+ .build(Routers.DISCUSSION)
+ .navigation()
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/search/SearchActivity.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/search/SearchActivity.kt
new file mode 100644
index 0000000..035b864
--- /dev/null
+++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/search/SearchActivity.kt
@@ -0,0 +1,66 @@
+package com.remax.visualnovel.ui.search
+
+
+import androidx.activity.viewModels
+import androidx.lifecycle.Observer
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.alibaba.android.arouter.launcher.ARouter
+import com.remax.visualnovel.app.base.BaseBindingActivity
+import com.remax.visualnovel.utils.Routers
+import com.remax.visualnovel.utils.StatusBarUtils
+import com.pengxr.modular.eventbus.generated.events.EventDefineOfUserEvents
+import com.remax.visualnovel.databinding.ActivityCheckinBinding
+import com.remax.visualnovel.databinding.ActivitySearchBinding
+import com.remax.visualnovel.event.model.OnLoginEvent
+import com.remax.visualnovel.extension.launchWithRequest
+import com.remax.visualnovel.ui.main.MainViewModel
+import dagger.hilt.android.AndroidEntryPoint
+
+
+
+@AndroidEntryPoint
+@Route(path = Routers.SEARCH)
+class SearchActivity : BaseBindingActivity() {
+
+ private val mViewModel by viewModels()
+
+ override fun initView() {
+ StatusBarUtils.setStatusBarAndNavBarIsLight(this, false)
+ StatusBarUtils.setTransparent(this)
+
+ with(binding) {
+
+ }
+ }
+
+ override fun initData() {
+
+ }
+
+ private val loginObserver = Observer {
+ launchWithRequest({
+ //TODO - business handling for login events
+ if (it?.isLogin() == true) {
+
+ } else {
+
+ }
+ })
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ EventDefineOfUserEvents.onLoginStatusChanged().removeObserver(loginObserver)
+ }
+
+
+ companion object {
+ fun start() {
+ ARouter.getInstance()
+ .build(Routers.SEARCH)
+ .navigation()
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/splash/SplashActivity.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/splash/SplashActivity.kt
new file mode 100644
index 0000000..6b242d4
--- /dev/null
+++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/splash/SplashActivity.kt
@@ -0,0 +1,61 @@
+package com.remax.visualnovel.ui.splash
+
+
+import android.os.CountDownTimer
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.remax.visualnovel.app.base.BaseBindingActivity
+import com.remax.visualnovel.utils.Routers
+import com.remax.visualnovel.utils.StatusBarUtils
+import com.remax.visualnovel.databinding.ActivitySplashBinding
+import com.remax.visualnovel.ui.main.MainActivity
+import com.remax.visualnovel.utils.TimeUtils
+import dagger.hilt.android.AndroidEntryPoint
+
+
+
+@AndroidEntryPoint
+@Route(path = Routers.SPLASH)
+class SplashActivity : BaseBindingActivity() {
+
+ private var mCountDownTimer: CountDownTimer? = null
+
+ override fun initView() {
+ StatusBarUtils.setStatusBarAndNavBarIsLight(this, false)
+ StatusBarUtils.setTransparent(this)
+
+ with(binding) {
+
+ }
+ }
+
+ override fun initData() {
+ startCountDown()
+ }
+
+ private fun startCountDown() {
+ mCountDownTimer?.cancel()
+ mCountDownTimer = object : CountDownTimer(TimeUtils.ONE_SECOND * 1, 1000) {
+ override fun onTick(millisUntilFinished: Long) {
+
+ }
+ override fun onFinish() {
+ gotoMain()
+ }
+ }
+ mCountDownTimer?.start()
+ }
+
+ private fun gotoMain() {
+ MainActivity.start()
+ finish()
+ }
+
+
+ override fun onDestroy() {
+ super.onDestroy()
+ mCountDownTimer?.cancel()
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/utils/Routers.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/utils/Routers.kt
index c3ed97c..77e0a08 100644
--- a/VisualNovel/app/src/main/java/com/remax/visualnovel/utils/Routers.kt
+++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/utils/Routers.kt
@@ -13,15 +13,8 @@ class Routers {
private const val ROUTER = "/router/"
- /**
- * 欢迎页
- */
- const val WELCOME = "${ROUTER}welcome"
- const val TEST = "${ROUTER}test"
- /**
- * main activity
- */
+ const val SPLASH = "${ROUTER}splash"
const val MAIN = "${ROUTER}main"
const val ROUTE_FRAG_BOOKLIST = "${ROUTER}bookList"
const val ROUTE_FRAG_MANGALIST = "${ROUTER}mangaList"
@@ -30,6 +23,11 @@ class Routers {
const val LOGIN = "${ROUTER}login"
const val REGISTER = "${ROUTER}register"
const val BROWSER = "${ROUTER}browser"
+ const val CHAT = "${ROUTER}chat"
+ const val DISCUSSION = "${ROUTER}discussion"
+ const val SEARCH = "${ROUTER}search"
+ const val CHECK_IN = "${ROUTER}checkin"
+
diff --git a/VisualNovel/app/src/main/res/layout/activity_actor_chat.xml b/VisualNovel/app/src/main/res/layout/activity_actor_chat.xml
new file mode 100644
index 0000000..4b44c2d
--- /dev/null
+++ b/VisualNovel/app/src/main/res/layout/activity_actor_chat.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/res/layout/activity_checkin.xml b/VisualNovel/app/src/main/res/layout/activity_checkin.xml
new file mode 100644
index 0000000..4968422
--- /dev/null
+++ b/VisualNovel/app/src/main/res/layout/activity_checkin.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/res/layout/activity_discussion.xml b/VisualNovel/app/src/main/res/layout/activity_discussion.xml
new file mode 100644
index 0000000..365fe02
--- /dev/null
+++ b/VisualNovel/app/src/main/res/layout/activity_discussion.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/res/layout/activity_search.xml b/VisualNovel/app/src/main/res/layout/activity_search.xml
new file mode 100644
index 0000000..96910ae
--- /dev/null
+++ b/VisualNovel/app/src/main/res/layout/activity_search.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/res/layout/activity_splash.xml b/VisualNovel/app/src/main/res/layout/activity_splash.xml
new file mode 100644
index 0000000..57a973b
--- /dev/null
+++ b/VisualNovel/app/src/main/res/layout/activity_splash.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/res/mipmap-xxhdpi/splash_bg.webp b/VisualNovel/app/src/main/res/mipmap-xxhdpi/splash_bg.webp
new file mode 100644
index 0000000..b72aa72
Binary files /dev/null and b/VisualNovel/app/src/main/res/mipmap-xxhdpi/splash_bg.webp differ