如果您的应用程序打包在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 Summary
Modifier and TypeMethodDescriptionvoid
close()
隐藏闪屏,关闭窗口,并释放所有相关资源。为闪屏叠加图像创建图形上下文(作为Graphics2D
对象),允许您在闪屏上绘制。返回闪屏窗口的边界作为Rectangle
。返回当前闪屏图像。getSize()
返回闪屏窗口的大小作为Dimension
。static SplashScreen
返回用于控制支持显示的系统上Java启动闪屏的SplashScreen
对象。boolean
确定闪屏是否可见。void
setImageURL
(URL imageURL) 更改闪屏图像。void
update()
使用叠加图像的当前内容更新闪屏窗口。
-
Method Details
-
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
- 如果imageURL
为null
-
IOException
- 如果加载图像时出现错误 -
IllegalStateException
- 如果闪屏已关闭
-
getImageURL
返回当前闪屏图像。- 返回:
- 当前闪屏图像文件的URL
- 抛出:
-
IllegalStateException
- 如果闪屏已关闭
-
getBounds
返回闪屏窗口的边界作为Rectangle
。如果,例如,您想要在相同位置用您的窗口替换闪屏,则可能会有用。您无法控制闪屏的大小或位置。当图像更改时,闪屏大小会自动调整。
图像可能包含透明区域,因此报告的边界可能比屏幕上可见的闪屏图像大。
- 返回:
-
包含闪屏边界的
Rectangle
- 抛出:
-
IllegalStateException
- 如果闪屏已关闭
-
getSize
返回闪屏窗口的大小作为Dimension
。如果,例如,您想要在闪屏叠加表面上绘制,则可能有用。您无法控制闪屏的大小或位置。当图像更改时,闪屏大小会自动调整。
图像可能包含透明区域,因此报告的大小可能比屏幕上可见的闪屏图像大。
- 返回:
-
表示闪屏大小的
Dimension
对象 - 抛出:
-
IllegalStateException
- 如果闪屏已关闭
-
createGraphics
为闪屏叠加图像创建图形上下文(作为Graphics2D
对象),允许您在闪屏上绘制。请注意,您不是在主图像上绘制,而是在使用alpha混合显示在主图像上的图像上绘制。还请注意,在叠加图像上绘制不一定会更新闪屏窗口的内容。当您希望立即更新闪屏时,应在SplashScreen
上调用update()
。图形上下文的坐标空间中的像素(0, 0)对应于闪屏本机窗口边界的原点(请参见
getBounds()
)。- 返回:
- 闪屏叠加表面的图形上下文
- 抛出:
-
IllegalStateException
- 如果闪屏已关闭
-
update
使用叠加图像的当前内容更新闪屏窗口。- 抛出:
-
IllegalStateException
- 如果叠加图像不存在;例如,如果从未调用createGraphics
,或者如果闪屏已关闭
-
close
隐藏闪屏,关闭窗口,并释放所有相关资源。- 抛出:
-
IllegalStateException
- 如果闪屏已关闭
-
isVisible
public boolean isVisible()确定闪屏是否可见。可以使用close()
隐藏闪屏,当第一个AWT/Swing窗口可见时,闪屏也会自动隐藏。请注意,本机平台可能会延迟在屏幕上显示闪屏本机窗口。此方法的返回值为
true
仅保证尚未发生隐藏闪屏窗口的条件。- 返回:
- 如果闪屏可见(尚未关闭),则为true,否则为false
-