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)
这篇关于如何以正确的方式制作闪屏,即不让它成为应用程序进程的一部分?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何以正确的方式制作闪屏,即不让它成为应用程序进程的一部分?
基础教程推荐
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01