在java的使用过程中,我们会发现它的功能真的很强大,完成内容也极其丰富。今天就给大家介绍一下如何在java中实现幻灯片切换特效,以及通过实际的代码来为大家展示。
在最开始,需要说明的是,这个代码是实现淡入淡出、缓慢覆盖、旋转覆盖等10多种幻灯片的变换效果的。
它的功能实现主要包括以下方面:一、图片加载类ImageLoader实现:
⑴、用阻塞队列存储图片:BlockingQueue images=new ArrayBlockingQueue<>(2);
⑵、用图片eof表示图片队列结束:Image eof=new WritableImage(1, 1);
⑶、循环读取指定图片,由于是阻塞队列,所以当队列满的时候线程会自动阻塞。
具体代码如下:
public void run() { int id = 0; try { while (true) { String path = resources[id]; InputStream is = getClass() .getResourceAsStream(path); if (is != null) { Image image = new Image(is, width, height, true, true); if (!image.isError()) { images.put(image); } } id++; if (id >= resources.length) { id = 0; } } } catch (Exception e) {} finally { if (!cancelled) { try { images.put(eof); } catch (InterruptedException e) {} } } }
二、特效实现,以弧形切换图片为例:首先定义LengthTransition变化特效:设置变化时间,以及弧度数跟时间的变化关系。代码如下:
class LengthTransition extends Transition { Arc arc; public LengthTransition(Duration d, Arc arc) { this.arc = arc; setCycleDuration(d); } @Override protected void interpolate(double d) { arc.setLength(d * 360); } }
然后设置图片层叠效果:
group.setBlendMode(BlendMode.SRC_OVER); next.setBlendMode(BlendMode.SRC_ATOP);
以及之前那张图片的淡出特效:
FadeTransition ft = new FadeTransition(Duration.seconds(0.2), mask2);
最后同时执行这两个特效:
ParallelTransition pt = new ParallelTransition(lt, ft);
效果图如下所示:
以上就是有关于在java中实现幻灯片切换特效的具体方法展示,以及通过实际的代码为大家详细地表现了出来。想要了解更多java经典例子和常见问题,敬请关注奇Q工具网。
推荐阅读: