Module java.desktop
Package java.awt

Class SplashScreen

java.lang.Object
java.awt.SplashScreen

public final class SplashScreen extends Object
启动时可以显示闪屏,在Java虚拟机(JVM)启动之前。闪屏显示为一个包含图像的无装饰窗口。您可以使用GIF、JPEG或PNG文件作为图像。 GIF格式支持动画,而透明度则同时支持GIF和PNG。窗口位于屏幕中心。在多监视器系统上的位置未指定。这取决于平台和实现。一旦Swing/AWT显示第一个窗口,闪屏窗口将自动关闭(也可以使用Java API手动关闭,请参见下文)。

如果您的应用程序打包在jar文件中,可以在MANIFEST.MF文件中使用"SplashScreen-Image"选项显示闪屏。将图像放在jar存档中,并在选项中指定路径。路径不应以斜杠开头。
例如,在manifest.mf文件中:

 Manifest-Version: 1.0
 Main-Class: Test
 SplashScreen-Image: filename.gif
 

如果Java实现提供命令行界面,并且您通过命令行或快捷方式运行应用程序,请使用Java应用程序启动器选项显示闪屏。Oracle参考实现允许您使用-splash:选项指定闪屏图像位置。
例如:

 java -splash:filename.gif Test
 
还支持HiDPI缩放图像。无缩放图像名称,即filename.gif,应传递给manifest.mf/-splash:选项,无论是HiDPI还是非HiDPI的所有图像类型。以下是缩放图像的命名约定。屏幕比例1.25:filename@125pct.gif 屏幕比例1.50:filename@150pct.gif 屏幕比例2:filename@200pct.gif 和filename@2x.gif都受支持 屏幕比例2.50:filename@250pct.gif 屏幕比例3:filename@300pct.gif 和filename@3x.gif都受支持 命令行界面优先于MANIFEST设置。

在目标平台和显示的限制下,闪屏将尽可能忠实地显示整个闪屏图像。

暗示指定的图像按原样呈现在屏幕上,即保留图像文件中指定的确切颜色值。但在某些情况下,显示的图像可能会有所不同,例如,在将32位每像素(bpp)图像应用颜色抖动以显示在16位或8位bpp屏幕上时。本机平台显示配置也可能影响显示图像的颜色(例如,颜色配置文件等)

SplashScreen类提供了控制闪屏的API。此类可用于关闭闪屏、更改闪屏图像、获取闪屏本机窗口位置/大小以及在闪屏上绘制。不能用于创建闪屏。您应该使用Java实现提供的选项来创建闪屏。

此类无法实例化。只能存在一个此类的实例,并且可以通过使用getSplashScreen()静态方法获取。如果在应用程序启动时未通过命令行或MANIFEST文件选项创建闪屏,则getSplashScreen方法返回null

自版本:
1.6
  • Method Details

    • getSplashScreen

      public static SplashScreen getSplashScreen()
      返回用于控制支持显示的系统上Java启动闪屏的SplashScreen对象。
      返回:
      SplashScreen实例,如果没有或已关闭,则返回null
      抛出:
      UnsupportedOperationException - 如果当前工具包不支持闪屏功能
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
    • setImageURL

      public void setImageURL(URL imageURL) throws NullPointerException, IOException, IllegalStateException
      更改闪屏图像。新图像从指定的URL加载;支持GIF、JPEG和PNG图像格式。该方法在图像加载完成并窗口已更新后返回。闪屏窗口根据图像大小调整大小,并居中显示在屏幕上。
      参数:
      imageURL - 新闪屏图像的非null URL
      抛出:
      NullPointerException - 如果imageURLnull
      IOException - 如果加载图像时出现错误
      IllegalStateException - 如果闪屏已关闭
    • getImageURL

      public URL getImageURL() throws IllegalStateException
      返回当前闪屏图像。
      返回:
      当前闪屏图像文件的URL
      抛出:
      IllegalStateException - 如果闪屏已关闭
    • getBounds

      public Rectangle getBounds() throws IllegalStateException
      返回闪屏窗口的边界作为Rectangle。如果,例如,您想要在相同位置用您的窗口替换闪屏,则可能会有用。

      您无法控制闪屏的大小或位置。当图像更改时,闪屏大小会自动调整。

      图像可能包含透明区域,因此报告的边界可能比屏幕上可见的闪屏图像大。

      返回:
      包含闪屏边界的Rectangle
      抛出:
      IllegalStateException - 如果闪屏已关闭
    • getSize

      public Dimension getSize() throws IllegalStateException
      返回闪屏窗口的大小作为Dimension。如果,例如,您想要在闪屏叠加表面上绘制,则可能有用。

      您无法控制闪屏的大小或位置。当图像更改时,闪屏大小会自动调整。

      图像可能包含透明区域,因此报告的大小可能比屏幕上可见的闪屏图像大。

      返回:
      表示闪屏大小的Dimension对象
      抛出:
      IllegalStateException - 如果闪屏已关闭
    • createGraphics

      public Graphics2D createGraphics() throws IllegalStateException
      为闪屏叠加图像创建图形上下文(作为Graphics2D对象),允许您在闪屏上绘制。请注意,您不是在主图像上绘制,而是在使用alpha混合显示在主图像上的图像上绘制。还请注意,在叠加图像上绘制不一定会更新闪屏窗口的内容。当您希望立即更新闪屏时,应在SplashScreen上调用update()

      图形上下文的坐标空间中的像素(0, 0)对应于闪屏本机窗口边界的原点(请参见getBounds())。

      返回:
      闪屏叠加表面的图形上下文
      抛出:
      IllegalStateException - 如果闪屏已关闭
    • update

      public void update() throws IllegalStateException
      使用叠加图像的当前内容更新闪屏窗口。
      抛出:
      IllegalStateException - 如果叠加图像不存在;例如,如果从未调用createGraphics,或者如果闪屏已关闭
    • close

      public void close() throws IllegalStateException
      隐藏闪屏,关闭窗口,并释放所有相关资源。
      抛出:
      IllegalStateException - 如果闪屏已关闭
    • isVisible

      public boolean isVisible()
      确定闪屏是否可见。可以使用close()隐藏闪屏,当第一个AWT/Swing窗口可见时,闪屏也会自动隐藏。

      请注意,本机平台可能会延迟在屏幕上显示闪屏本机窗口。此方法的返回值为true仅保证尚未发生隐藏闪屏窗口的条件。

      返回:
      如果闪屏可见(尚未关闭),则为true,否则为false