如何在 Compose 多平台应用程序启动时显示操作系统启动屏幕?

问题描述 投票:0回答:1

JVM (Java/Kotlin) 应用程序需要一点时间来启动并呈现给用户。

加载应用程序时可能有各种“技巧”来显示启动屏幕。

我显示启动画面的主要目的是显示应用程序正在启动的一些指示。 因此,例如,启动启动器 Java 进程来显示人工启动屏幕可能会达不到目的,因为它本身可能需要一些时间才能出现在屏幕上。

那么,当我的应用程序尚未出现在屏幕上时,如何利用操作系统本机启动画面?

jvm splash-screen compose-multiplatform compose-desktop jetbrains-compose
1个回答
0
投票

Java 似乎支持 在应用程序启动时显示操作系统本机启动画面

我只在 Windows 上测试过它,它按预期工作。

所以,在我的项目build.gradle(.kts)中我添加了这个:

compose.desktop {
    application {
        nativeDistributions {
            appResourcesRootDir = rootDir.resolve("myAssets")
            // ...
        }
        // The image path is relative to the app (Java) working directory
        // which is the app installation root directory (where the .exe file resides)
        jvmArgs += "-splash:app/resources/myImage.gif"
        // ...
    }
}

它使用放置在 /myAssets/common/ 目录中的 myImage.gif 图像。
有关更多信息,请参阅将文件添加到打包的应用程序

当应用程序通过其安装的 exe 或 Compose Multiplatform

run*Distributable
任务之一启动时,启动屏幕将起作用。 还要设置应用程序 fat/uber jar 的启动画面(使用
package*UberJar*
任务之一创建), 将启动图像复制到类路径(如 src/main/resources 目录) 并在构建文件中添加以下代码以更新所有 Jar 任务:

tasks.withType<org.gradle.jvm.tasks.Jar> {
    manifest {
        attributes["SplashScreen-Image"] = "myImage.gif"
    }
}

Windows 似乎不尊重 GIF 速度和无循环设置,并且 以低帧速率播放动画。请参阅 C# 中的 Gif 动画文件的帧速率低于应有的值

请参阅 Compose Multiplatform 存储库中的相关问题

© www.soinside.com 2019 - 2024. All rights reserved.