How to make a Splash screen the proper way i.e. not to make it a part of the app process?(如何以正确的方式制作闪屏,即不让它成为应用程序进程的一部分?)
问题描述
我是Android的新手。我想在我的应用程序中添加一个闪屏。我经历了这个official documentation。
上面写着
如果用户在应用程序的进程未运行(冷启动)或活动尚未创建(热启动)的情况下启动应用程序,则会发生以下事件。(在热启动期间不会显示启动画面。)1)系统使用您定义的主题和任何动画显示启动画面。2)当应用程序准备就绪时,闪屏关闭并显示应用程序。
尽管将活动实现为闪屏(如下面给出的代码片段)确实有效
class SplashScreenActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash_screen)
supportActionBar?.hide()
Handler(Looper.getMainLooper()).postDelayed({
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}, 2000)
}
}
但我猜这不是传统的方式,因为闪屏成为应用程序过程的一部分,它在几毫秒长的黑屏之后启动。
我猜这是系统获取应用程序数据资源的时候,也是应该启动闪屏的时候至少Google Play商店或Whatsapp或其他所有安装的应用程序都是这样做的,闪屏启动是即时的。
现在,正如文档所坚持的那样,当我尝试设置主题属性时,我收到错误消息Cannot resolve symbol 'android:windowSplashScreenBackground'。这是我的style.xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.Books" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Unresolved -->
<item name="android:windowSplashScreenBackground">@color/black</item>
<item name="android:windowSplashScreenAnimationDuration">1000</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/books_logo</item>
</style>
</resources>
因此,
1.如何克服此问题?
2.有其他办法吗?
3.我是否遗漏了什么?是否有某种方法可以将活动与应用程序进程分离?任何形式的帮助都是非常感谢的。谢谢!
推荐答案
您是否尝试过阅读本文?
Implementing Core Splashscreen API
我从教程中学到的东西:
您需要在setContentView(R.id.***)之前调用installSplashScreen()
如本文所示,您需要使用自定义SplashScreen属性(然后将App主题设置为该属性)see here
只需删除您的SplashScreenActivity,使用Handler.postDelayed也不是处理此问题的好方法(库本身处理切换显示的内容,只需使用您的MainActivity)
这篇关于如何以正确的方式制作闪屏,即不让它成为应用程序进程的一部分?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何以正确的方式制作闪屏,即不让它成为应用程序进程的一部分?
基础教程推荐
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- AdMob 广告未在模拟器中显示 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01
