欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java多种幻灯片切换特效(经典)

程序员文章站 2023-12-12 18:12:04
功能实现: 1、图片加载类imageloader实现: 1)用阻塞队列存储要图片:blockingqueue images = new arrayblockingque...

功能实现:

1、图片加载类imageloader实现:

1)用阻塞队列存储要图片:blockingqueue images = new arrayblockingqueue<>(2);

2)用图片eof表示图片队列结束:image eof = new writableimage(1, 1);

3)循环读取指定图片,由于是阻塞队列,所以当队列满的时候线程会自动阻塞.

复制代码 代码如下:

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) {
                }
            }
        }
    }

2、特效实现 以弧形切换图片为例: 首先定义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多种幻灯片切换特效(经典)

上一篇:

下一篇: