修复HyperOS设备上的启动闪屏问题 #78
This commit is contained in:
@@ -39,7 +39,7 @@
|
|||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:icon="@mipmap/launcher0"
|
android:icon="@mipmap/launcher0"
|
||||||
android:targetActivity=".ui.welcome.SplashActivity">
|
android:targetActivity=".ui.main.MainActivity">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:icon="@mipmap/launcher1"
|
android:icon="@mipmap/launcher1"
|
||||||
android:targetActivity=".ui.welcome.SplashActivity">
|
android:targetActivity=".ui.main.MainActivity">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:icon="@mipmap/launcher2"
|
android:icon="@mipmap/launcher2"
|
||||||
android:targetActivity=".ui.welcome.SplashActivity">
|
android:targetActivity=".ui.main.MainActivity">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:icon="@mipmap/launcher3"
|
android:icon="@mipmap/launcher3"
|
||||||
android:targetActivity=".ui.welcome.SplashActivity">
|
android:targetActivity=".ui.main.MainActivity">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:icon="@mipmap/launcher4"
|
android:icon="@mipmap/launcher4"
|
||||||
android:targetActivity=".ui.welcome.SplashActivity">
|
android:targetActivity=".ui.main.MainActivity">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:icon="@mipmap/launcher5"
|
android:icon="@mipmap/launcher5"
|
||||||
android:targetActivity=".ui.welcome.SplashActivity">
|
android:targetActivity=".ui.main.MainActivity">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
@@ -116,29 +116,23 @@
|
|||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:icon="@mipmap/launcher6"
|
android:icon="@mipmap/launcher6"
|
||||||
android:targetActivity=".ui.welcome.SplashActivity">
|
android:targetActivity=".ui.main.MainActivity">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity-alias>
|
</activity-alias>
|
||||||
<activity
|
|
||||||
android:name=".ui.welcome.SplashActivity"
|
|
||||||
android:launchMode="singleTop"
|
|
||||||
android:theme="@style/Theme.App.Starting"
|
|
||||||
android:exported="true">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.intent.action.MAIN" />
|
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
<!-- 主界面 -->
|
<!-- 主界面 -->
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.main.MainActivity"
|
android:name=".ui.main.MainActivity"
|
||||||
android:alwaysRetainTaskState="true"
|
android:alwaysRetainTaskState="true"
|
||||||
android:enableOnBackInvokedCallback="true"
|
android:enableOnBackInvokedCallback="true"
|
||||||
android:exported="false">
|
android:exported="true">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.welcome.WelcomeActivity"
|
android:name=".ui.welcome.WelcomeActivity"
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import android.content.pm.ApplicationInfo
|
|||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import com.github.liuyueyi.quick.transfer.constants.TransType
|
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.LiveEventBus
|
||||||
import com.jeremyliao.liveeventbus.logger.DefaultLogger
|
import com.jeremyliao.liveeventbus.logger.DefaultLogger
|
||||||
import com.script.rhino.ReadOnlyJavaObject
|
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.rhino.NativeBaseSource
|
||||||
import io.legato.kazusa.help.source.SourceHelp
|
import io.legato.kazusa.help.source.SourceHelp
|
||||||
import io.legato.kazusa.help.storage.Backup
|
import io.legato.kazusa.help.storage.Backup
|
||||||
|
import io.legato.kazusa.lib.theme.primaryColor
|
||||||
import io.legato.kazusa.model.BookCover
|
import io.legato.kazusa.model.BookCover
|
||||||
import io.legato.kazusa.utils.ChineseUtils
|
import io.legato.kazusa.utils.ChineseUtils
|
||||||
import io.legato.kazusa.utils.FirebaseManager
|
import io.legato.kazusa.utils.FirebaseManager
|
||||||
import io.legato.kazusa.utils.LogUtils
|
import io.legato.kazusa.utils.LogUtils
|
||||||
import io.legato.kazusa.utils.defaultSharedPreferences
|
import io.legato.kazusa.utils.defaultSharedPreferences
|
||||||
import io.legato.kazusa.utils.getPrefBoolean
|
import io.legato.kazusa.utils.getPrefBoolean
|
||||||
|
import io.legato.kazusa.utils.getPrefString
|
||||||
import io.legato.kazusa.utils.isDebuggable
|
import io.legato.kazusa.utils.isDebuggable
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.chromium.base.ThreadUtils
|
import org.chromium.base.ThreadUtils
|
||||||
@@ -64,6 +68,20 @@ class App : Application() {
|
|||||||
private lateinit var oldConfig: Configuration
|
private lateinit var oldConfig: Configuration
|
||||||
|
|
||||||
override fun onCreate() {
|
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()
|
super.onCreate()
|
||||||
FirebaseManager.init(this)
|
FirebaseManager.init(this)
|
||||||
CrashHandler(this)
|
CrashHandler(this)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ object LauncherIconHelp {
|
|||||||
// 主Activity的ComponentName
|
// 主Activity的ComponentName
|
||||||
private val mainActivity = ComponentName(
|
private val mainActivity = ComponentName(
|
||||||
appCtx.packageName,
|
appCtx.packageName,
|
||||||
"${appCtx.packageName}.ui.welcome.SplashActivity"
|
"${appCtx.packageName}.ui.main.MainActivity"
|
||||||
)
|
)
|
||||||
|
|
||||||
fun changeIcon(icon: String?) {
|
fun changeIcon(icon: String?) {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
package io.legato.kazusa.ui.main
|
package io.legato.kazusa.ui.main
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.format.DateUtils
|
import android.text.format.DateUtils
|
||||||
@@ -12,6 +13,7 @@ import android.widget.FrameLayout
|
|||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import androidx.activity.addCallback
|
import androidx.activity.addCallback
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
|
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||||
import androidx.core.view.get
|
import androidx.core.view.get
|
||||||
import androidx.core.view.postDelayed
|
import androidx.core.view.postDelayed
|
||||||
import androidx.fragment.app.Fragment
|
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.lib.dialogs.alert
|
||||||
import io.legato.kazusa.service.BaseReadAloudService
|
import io.legato.kazusa.service.BaseReadAloudService
|
||||||
import io.legato.kazusa.ui.about.CrashLogsDialog
|
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.book.search.SearchActivity
|
||||||
import io.legato.kazusa.ui.main.bookshelf.BaseBookshelfFragment
|
import io.legato.kazusa.ui.main.bookshelf.BaseBookshelfFragment
|
||||||
import io.legato.kazusa.ui.main.bookshelf.books.BookshelfFragment1
|
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.explore.ExploreFragment
|
||||||
import io.legato.kazusa.ui.main.my.MyFragment
|
import io.legato.kazusa.ui.main.my.MyFragment
|
||||||
import io.legato.kazusa.ui.main.rss.RssFragment
|
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.ui.widget.dialog.TextDialog
|
||||||
|
import io.legato.kazusa.utils.getPrefBoolean
|
||||||
import io.legato.kazusa.utils.gone
|
import io.legato.kazusa.utils.gone
|
||||||
import io.legato.kazusa.utils.hideSoftInput
|
import io.legato.kazusa.utils.hideSoftInput
|
||||||
import io.legato.kazusa.utils.observeEvent
|
import io.legato.kazusa.utils.observeEvent
|
||||||
@@ -103,8 +108,12 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
installSplashScreen()
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
|
if (checkStartupRoute()) return
|
||||||
setExitSharedElementCallback(MaterialContainerTransformSharedElementCallback())
|
setExitSharedElementCallback(MaterialContainerTransformSharedElementCallback())
|
||||||
|
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
pagePosition = savedInstanceState.getInt("currentPagePosition", 0)
|
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 {
|
private fun initView() = binding.run {
|
||||||
viewPagerMain.offscreenPageLimit = 3
|
viewPagerMain.offscreenPageLimit = 3
|
||||||
viewPagerMain.adapter = adapter
|
viewPagerMain.adapter = adapter
|
||||||
@@ -343,6 +367,7 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
private fun upBottomMenu() {
|
private fun upBottomMenu() {
|
||||||
val navView = getNavigationBarView()
|
val navView = getNavigationBarView()
|
||||||
val menu = navView.menu
|
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()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<?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"
|
|
||||||
android:background="?attr/colorSurface">
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
Reference in New Issue
Block a user