【问题标题】:How to display the splash screen immediately when Qt/QML android app is launched?启动 Qt/QML android 应用程序时如何立即显示启动画面?
【发布时间】:2021-01-14 09:51:15
【问题描述】:

我有空的 Qt/QML android 应用程序,我正在尝试显示启动画面。

如果没有启动屏幕实现,将显示此屏幕:​​

现在我正在关注this 的启动画面示例,它在 android 清单 文件中添加了 启动画面。这是我得到的结果:

我的问题是,是否可以避免屏幕编号 1?我希望在启动应用程序时立即显示启动画面,而不是屏幕 1。欢迎任何建议。提前致谢。

【问题讨论】:

    标签: android qt qml splash-screen


    【解决方案1】:

    在 Qt5.15 中,您可以在 AndroidManifest.xml(在 QtCreator 中)中选择 Android 原生启动画面图像

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

    定时器启动后(1-2秒内),就可以启动加载器了。

    【讨论】:

    • 感谢您的回答。我已经使用 QtCreator 的初始屏幕模板,但这并没有帮助。关于其他选项,“启动您的软件...”,据我了解,在我的 main.qml 中,我需要简单的图像,这将是我的启动屏幕,它将立即加载,其他“我的主要 qml 的一部分”到放置在稍后将加载的 Loader{} 组件中(使用 Timer)。我说的对吗?
    • 是的,你是真的。想法是尽快启动闪屏 UI,然后使用 150ms 的计时器和加载器,对真实 UI 进行动态加载
    【解决方案2】:

    感谢post,我想我找到了解决这个问题的方法。

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

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

    我想补充一点,当作者说“他们开始晚了”时,我想这是因为你所有的Qt/QML android app都是编译在结尾像 .so(共享库)。所以当你的应用启动时,后面发生的是:

    1. 启动应用程序
    2. 加载共享库(您的 Qt/QML android 应用)
    3. 从您的应用(共享库)调用 ma​​in()

    现在显示闪屏的解决方案(上面帖子的步骤):

    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 中的这一行,activity 标记

      <meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash"/>
      
    6. 现在其余的都在您的 ma​​in.qml 文件中。在开始时将您的 Window/ApplicationWindow 元素设置为不可见(正如我所见,这将保持启动画面),将 Loader 用于您的第一页,并在加载时将 Window/ApplicationWIdow 可见设置为 true。这是我的例子:

    Loader
    {
        id: loader
        asynchronous: true
        anchors.fill: parent
        sourceComponent: MainScreen
        {
            width: root.width
            height: root.height
    
            Component.onCompleted:
            {
                root.isReady = true
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-08-10
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 2014-01-22
      相关资源
      最近更新 更多