> 如何创建启动画面

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

  • 广告产品

  • 向用户指示应用程序正在 Long 时间启动中启动

  • 提供每次访问仅需要一次的信息

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

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

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

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

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

  • Command-line argument

  • 具有指定清单选项的 Java™存档(JAR)文件

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

要从命令行显示初始屏幕,请使用-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类不能用于创建初始屏幕。在此类中创建的单个实例只能存在。

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

使用 SplashScreen API 的示例

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

ExampleWhere DescribedNotes
SplashDemoThis section在打开应用程序窗口之前显示启动屏幕。