修复HyperOS设备上的启动闪屏问题 #78
This commit is contained in:
@@ -9,6 +9,8 @@ import android.content.pm.ApplicationInfo
|
||||
import android.content.res.Configuration
|
||||
import android.os.Build
|
||||
import com.github.liuyueyi.quick.transfer.constants.TransType
|
||||
import com.google.android.material.color.DynamicColors
|
||||
import com.google.android.material.color.DynamicColorsOptions
|
||||
import com.jeremyliao.liveeventbus.LiveEventBus
|
||||
import com.jeremyliao.liveeventbus.logger.DefaultLogger
|
||||
import com.script.rhino.ReadOnlyJavaObject
|
||||
@@ -44,12 +46,14 @@ import io.legato.kazusa.help.http.okHttpClient
|
||||
import io.legato.kazusa.help.rhino.NativeBaseSource
|
||||
import io.legato.kazusa.help.source.SourceHelp
|
||||
import io.legato.kazusa.help.storage.Backup
|
||||
import io.legato.kazusa.lib.theme.primaryColor
|
||||
import io.legato.kazusa.model.BookCover
|
||||
import io.legato.kazusa.utils.ChineseUtils
|
||||
import io.legato.kazusa.utils.FirebaseManager
|
||||
import io.legato.kazusa.utils.LogUtils
|
||||
import io.legato.kazusa.utils.defaultSharedPreferences
|
||||
import io.legato.kazusa.utils.getPrefBoolean
|
||||
import io.legato.kazusa.utils.getPrefString
|
||||
import io.legato.kazusa.utils.isDebuggable
|
||||
import kotlinx.coroutines.launch
|
||||
import org.chromium.base.ThreadUtils
|
||||
@@ -64,6 +68,20 @@ class App : Application() {
|
||||
private lateinit var oldConfig: Configuration
|
||||
|
||||
override fun onCreate() {
|
||||
|
||||
when (getPrefString("app_theme", "0")) {
|
||||
"11" -> {
|
||||
if (AppConfig.customMode == "accent")
|
||||
setTheme(R.style.ThemeOverlay_WhiteBackground)
|
||||
DynamicColors.applyToActivitiesIfAvailable(this, DynamicColorsOptions.Builder()
|
||||
.setContentBasedSource(this.primaryColor)
|
||||
.build())
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (AppConfig.pureBlack)
|
||||
setTheme(R.style.ThemeOverlay_PureBlack)
|
||||
super.onCreate()
|
||||
FirebaseManager.init(this)
|
||||
CrashHandler(this)
|
||||
|
||||
@@ -25,7 +25,7 @@ object LauncherIconHelp {
|
||||
// 主Activity的ComponentName
|
||||
private val mainActivity = ComponentName(
|
||||
appCtx.packageName,
|
||||
"${appCtx.packageName}.ui.welcome.SplashActivity"
|
||||
"${appCtx.packageName}.ui.main.MainActivity"
|
||||
)
|
||||
|
||||
fun changeIcon(icon: String?) {
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
package io.legato.kazusa.ui.main
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.res.Configuration
|
||||
import android.os.Bundle
|
||||
import android.text.format.DateUtils
|
||||
@@ -12,6 +13,7 @@ import android.widget.FrameLayout
|
||||
import android.widget.ImageView
|
||||
import androidx.activity.addCallback
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||
import androidx.core.view.get
|
||||
import androidx.core.view.postDelayed
|
||||
import androidx.fragment.app.Fragment
|
||||
@@ -40,6 +42,7 @@ import io.legato.kazusa.help.storage.Backup
|
||||
import io.legato.kazusa.lib.dialogs.alert
|
||||
import io.legato.kazusa.service.BaseReadAloudService
|
||||
import io.legato.kazusa.ui.about.CrashLogsDialog
|
||||
import io.legato.kazusa.ui.book.read.ReadBookActivity
|
||||
import io.legato.kazusa.ui.book.search.SearchActivity
|
||||
import io.legato.kazusa.ui.main.bookshelf.BaseBookshelfFragment
|
||||
import io.legato.kazusa.ui.main.bookshelf.books.BookshelfFragment1
|
||||
@@ -48,7 +51,9 @@ import io.legato.kazusa.ui.main.bookshelf.books.BookshelfFragment3
|
||||
import io.legato.kazusa.ui.main.explore.ExploreFragment
|
||||
import io.legato.kazusa.ui.main.my.MyFragment
|
||||
import io.legato.kazusa.ui.main.rss.RssFragment
|
||||
import io.legato.kazusa.ui.welcome.WelcomeActivity
|
||||
import io.legato.kazusa.ui.widget.dialog.TextDialog
|
||||
import io.legato.kazusa.utils.getPrefBoolean
|
||||
import io.legato.kazusa.utils.gone
|
||||
import io.legato.kazusa.utils.hideSoftInput
|
||||
import io.legato.kazusa.utils.observeEvent
|
||||
@@ -103,8 +108,12 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
installSplashScreen()
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
if (checkStartupRoute()) return
|
||||
setExitSharedElementCallback(MaterialContainerTransformSharedElementCallback())
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
pagePosition = savedInstanceState.getInt("currentPagePosition", 0)
|
||||
}
|
||||
@@ -206,6 +215,21 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkStartupRoute(): Boolean {
|
||||
return when {
|
||||
LocalConfig.isFirstOpenApp -> {
|
||||
startActivity<WelcomeActivity>()
|
||||
finish()
|
||||
true
|
||||
}
|
||||
getPrefBoolean(PreferKey.defaultToRead) -> {
|
||||
startActivity<ReadBookActivity>()
|
||||
false
|
||||
}
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
private fun initView() = binding.run {
|
||||
viewPagerMain.offscreenPageLimit = 3
|
||||
viewPagerMain.adapter = adapter
|
||||
@@ -343,6 +367,7 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
||||
}
|
||||
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
private fun upBottomMenu() {
|
||||
val navView = getNavigationBarView()
|
||||
val menu = navView.menu
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
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.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||
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?) {
|
||||
val splashScreen = installSplashScreen()
|
||||
super.onCreate(savedInstanceState)
|
||||
splashScreen.setKeepOnScreenCondition { true }
|
||||
routeNext()
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
finish()
|
||||
}
|
||||
|
||||
private fun go(target: Class<*>) {
|
||||
startActivity(
|
||||
Intent(this, target),
|
||||
ActivityOptionsCompat.makeSceneTransitionAnimation(this).toBundle()
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user