【问题标题】:Animated GIF leads to SplashScreen being null动画 GIF 导致 SplashScreen 为空
【发布时间】:2025-11-22 07:40:01
【问题描述】:

我知道这可能接近于该线程的重复:Animated GIF in Splashscreen

但由于它似乎没有答案,我无法评论它或任何东西,我很抱歉重新发布这个,但如果有人能给我一个答案,那就太棒了。

我正在制作一个游戏,这个游戏需要很长时间才能开始。因此,我想在加载屏幕期间向用户提供反馈,以便他知道应用程序没有崩溃。这就是我使用 java 7 中的 SplashScreen API 的原因。

在 Eclipse 中,当我使用 VM Arguments 中的以下配置运行我的应用程序时,SplashScreen.getSplashScreen() 返回 null

-splash:src/aapplication/Splash.gif

但是当我使用这个配置时,它工作正常(我必须将文件放在同一个包中,一个是Splash.png,另一个是Splash.gif):

-splash:src/aapplication/Splash.png

在 jar 文件中(MANIFEST.MF),这不起作用:

SplashScreen-Image: aapplication/Splash.gif

虽然这样做:

SplashScreen-Image: aapplication/Splash.png

我的 GIF 大约 1Mb,而 PNG 大约 50kb。

谁能向我解释为什么 GIF 甚至无法加载而 PNG 加载(我知道这不是路径,因为它们具有相同的路径)?

我看过的所有地方,它都说它应该和 PNG 一样好。

感谢您的帮助!

【问题讨论】:

  • 另一种方法可以是this

标签: java awt manifest splash-screen animated-gif


【解决方案1】:

我想你会发现问题归结为两件事......

  1. 使用命令行参数 (-splash),Java 期望图像是文件系统上的文件,而清单文件期望它是嵌入式资源。
  2. Java 似乎无法播放优化的 gif,即 gif 的帧代表上一帧和当前帧之间的差异,而不是完整的图像(就启动画面而言)。

我尝试过使用

第一张图片失败了,但第二张成功了,据我所知,区别在于第一张经过优化,第二张没有……

【讨论】:

  • 您能告诉我如何制作未优化的 gif 吗? (我使用网站 myspacegens.com 创建我的 gif,我对创建 gif 有点陌生)。
  • 不是真的,我自己不怎么做。最好的办法是找到一个更高级的生成器,它允许您为每个帧定义 DISPOSE_METHOD...
  • @MadProgrammer 我的孩子喜欢这部可怜的卡通片(HBO 的 Minimax :-)
  • @mKorbel 谢天谢地,我的还没有找到它......但是:P
  • @Xergz 哪个版本?