> 如何创建启动画面

几乎所有现代应用程序都有启动画面。通常,初始屏幕用于以下 Object:

Swing 和抽象窗口工具包(AWT)的 Java 基础类使开发人员能够在 Java 技术应用程序中创建初始屏幕。但是,由于初始屏幕的主要 Object 是向用户提供有关应用程序启动的反馈,因此应用程序的启动与初始屏幕弹出之间的延迟应该最小。在弹出初始屏幕之前,应用程序必须加载和初始化 Java™虚拟机(JVM),AWT,Swing 以及有时还依赖于应用程序的库。所产生的几秒钟的延迟使基于 Java™技术的启动画面的使用变得不那么理想。

幸运的是,Java™SE 6 提供了一种解决方案,允许应用程序甚至在虚拟机启动之前就更早地显示启动屏幕。 Java 应用程序启动器能够解码图像并将其显示在简单的非装饰窗口中。

初始屏幕可以显示任何gifpngjpeg图像,并具有透明性,半透明性和动画性。下图显示了以动画gif文件形式开发的 Java 应用程序初始屏幕的示例。

SplashScreen类用于关闭初始屏幕,更改初始屏幕图像,获取图像位置或大小以及在初始屏幕中绘画。应用程序无法创建此类的实例。只能在此类中创建一个实例,并且可以使用getSplashScreen()静态方法获得该实例。如果应用程序在启动时未通过命令行或清单文件选项创建启动画面,则getSplashScreen方法将返回 null。

通常,开发人员希望将初始屏幕图像保留在屏幕上,并在图像上显示一些内容。初始屏幕窗口的覆盖表面带有 alpha 通道,可以使用传统的Graphics2Dinterface访问该表面。

以下代码段显示了如何获取SplashScreen对象,然后如何使用createGraphics()方法创建图形上下文:

...
        final SplashScreen splash = SplashScreen.getSplashScreen();
        if (splash == null) {
            System.out.println("SplashScreen.getSplashScreen() returned null");
            return;
        }
        Graphics2D g = splash.createGraphics();
        if (g == null) {
            System.out.println("g is null");
            return;
        }
...

SplashDemo.java文件中找到演示的完整代码。

Note:

SplashDemo 应用程序使用固定的坐标来显示叠加信息。这些坐标取决于图像,并针对每个初始屏幕分别计算。

本机启动屏幕可以通过以下方式显示:

如何使用命令行参数显示启动画面

要从命令行显示初始屏幕,请使用-splash:命令行参数。此参数是显示初始屏幕的 Java 应用程序启动器选项:

java -splash:<file name> <class name>

Try this:

  • 编译SplashDemo.java文件。

  • splash.gif图片保存在images目录中。

  • 使用以下参数从命令行运行应用程序:

java -splash:images/splash.gif SplashDemo
  • await 直到初始屏幕已完全显示。

  • 出现应用程序窗口。要关闭窗口,请从弹出菜单中选择 File | Exit 或单击 X。

  • 将初始屏幕名称更改为不存在的图像,例如nnn.gif。运行应用程序,如下所示:

java -splash:images/nnn.gif SplashDemo
  • 您将看到以下输出字符串:
SplashScreen.getSplashScreen() returned null

如何使用 JAR 文件显示启动画面

如果您的应用程序打包在 JAR 文件中,则可以在清单文件中使用SplashScreen-Image选项显示初始屏幕。将图像放在 JAR 文件中,并在选项中指定路径,如下所示:

Manifest-Version: 1.0
Main-Class: <class name>
SplashScreen-Image: <image name>

Try this:

Manifest-Version: 1.0
Main-Class: SplashDemo
SplashScreen-Image: images/splash.gif
  • 使用以下命令创建一个 JAR 文件:
jar cmf splashmanifest.mf splashDemo.jar SplashDemo*.class images/splash.gif

有关 JAR 文件的更多信息,请参见JAR 文件中的打包程序页中的使用 JAR 文件

  • 运行应用程序:
java -jar splashDemo.jar
  • await,直到初始屏幕已完全显示。

  • 出现应用程序窗口。要关闭窗口,请从弹出菜单中选择 File | Exit 或单击 X。

Boot 画面 API

SplashScreen类不能用于创建初始屏幕。在此类中创建的单个实例只能存在。

Method Purpose
getSplashScreen() 返回用于 Java 启动初始屏幕控制的SplashScreen对象。
createGraphics() 为初始屏幕叠加图像创建图形上下文(作为Graphics2D对象),使您可以在初始屏幕上进行绘制。
getBounds() Rectangle返回初始屏幕窗口的边界。
close() 关闭初始屏幕并释放所有关联的资源。

使用 SplashScreen API 的示例

下表列出了使用启动屏幕的示例。

Example Where Described Notes
SplashDemo This section 在打开应用程序窗口之前显示启动屏幕。
首页