java中怎么实现幻灯片切换特效?详细实例展示

BSO 2020-09-01 16:39:36 java常见问答 5341

在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中实现幻灯片切换特效的具体方法展示,以及通过实际的代码为大家详细地表现了出来。想要了解更多java经典例子常见问题,敬请关注奇Q工具网。

推荐阅读:

java怎么做动态图片?怎么实现眨眼特效?

java怎么做出简单的抽奖程序?实例代码展示

java移位运算符包括哪些?详细实例展示