Qt / QML android应用启动后如何立即显示启动画面?

时间:2020-09-28 19:34:47

标签: android qt qml splash-screen

我有一个空的 Qt / QML android 应用,我正在尝试显示初始屏幕。

没有实施闪屏,将显示以下屏幕:

enter image description here

现在,我正在遵循this初始屏幕示例,该示例在Android清单中添加了初始屏幕。这就是我得到的结果:

enter image description here

我的问题是,是否可以避免屏幕编号1 ?我希望启动应用程序后立即显示启动屏幕,而不是屏幕1。任何建议都欢迎。预先感谢。

2 个答案:

答案 0 :(得分:1)

在Qt5.15中,您可以在AndroidManifest.xml(在QtCreator中)中选择一个Android本机启动屏幕图像

另一种选择是使用一个简单而快速的窗口来启动软件:只有一个窗口,一个图像(异步),一个计时器和一个用于其余软件的加载器。

激活计时器后(1-2秒内),您可以启动加载程序。

答案 1 :(得分:1)

由于post,我想找到了解决此问题的方法。

该帖子的作者,对于 Qt / QML android 应用中的启动屏幕写道:

基本上,您可以仅通过C ++ / QML代码忽略任何解决方案。因为 他们开始晚了。

我想补充一点,当作者说“它们开始得太晚了” 时,我认为这是因为您所有的 Qt / QML android应用都在最后是 .so(共享库)。因此,当您的应用启动时,发生的事情是:

  1. 启动应用
  2. 加载共享库(您的Qt / QML android应用)
  3. 从您的应用(共享库)中调用 main()

现在可以显示初始屏幕的解决方案(来自上面的帖子):

  1. 如果尚未创建,请从QtCreator为您的android应用创建模板。

  2. android / res / drawable 中创建 splash.xml ,例如this

  3. android / res / values 中创建自定义主题 apptheme.xml ,例如this

  4. 将此行添加到 AndroidManifest.xmnl

    中的活动代码

    android:theme =“ @ style / AppTheme”

  5. 活动标签内的 AndroidManifest.xml 中的这一行:

    <meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash"/>
    
  6. 现在其余的都在您的 main.qml 文件中。首先将您的 Window / ApplicationWindow 元素设置为不可见(如我所见,它将保留启动屏幕),将Loader用于第一页,并在其加载后将Window / ApplicationWIndow设置为true。这是我的示例:

装载机 { id:装载机 异步:true anchors.fill:父级 sourceComponent:主屏幕 { 宽度:root.width 高度:root.height

        Component.onCompleted:
        {
            root.isReady = true
        }
    }
}