我有 MainActivity
和 LoginActivity
,MainActivity
使用 Theme.MySplash
(有蓝色和应用程序图标)。
首次启动时,SplashScreen 显示良好(带有背景和应用程序图标),但是,当我从 LoginActivity
重新启动 MainActivity
时,SplashScreen 显示没有 应用程序图标。
我重新启动 MainActivity
而不是返回到 MainActivity
因为在我的真实应用程序中,我需要重新创建 MainActivity
这是演示代码
style.xml
<style name="Theme.MySplash" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">#00f</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_launcher_foreground</item>
<item name="postSplashScreenTheme">@style/Theme.AndroidSplashScreen12</item>
</style>
<style name="Theme.AndroidSplashScreen12" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<item name="android:windowBackground">#fff</item>
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
</style>
主 Activity
class MainActivity : AppCompatActivity() {
var keepSplashScreen = true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val splashScreen = installSplashScreen()
setContentView(R.layout.activity_main)
splashScreen.setKeepVisibleCondition { keepSplashScreen }
Handler(Looper.getMainLooper()).postDelayed({
keepSplashScreen = false
}, 1500)
findViewById<Button>(R.id.button_login).setOnClickListener {
startActivity(Intent(this@MainActivity, LoginActivity::class.java))
}
}
}
登录 Activity
class LoginActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login2)
findViewById<Button>(R.id.button_start_main).setOnClickListener {
finishAffinity()
startActivity(Intent(this@LoginActivity, MainActivity::class.java))
}
}
}
最佳答案
如果您通过 Splashscreen API 设置图标,那么如果您从 android studio 启动应用程序,图标将不会显示。如果您从手机打开应用程序,则图标将开始显示。
关于android - SplashScreen API 有时不显示图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69263654/