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