首页 文章

ImageViewer无法正常使用codenameone

提问于
浏览
1

我有几个关于图像查看器的问题 .

1)ImageViewer autoslides无法正常工作.imageViewer最初在首次启动应用程序时起作用 . 但是只要打开任何其他表单然后返回到包含imageViewer的表单,autoslide就不起作用 .

img viewer自动幻灯片的代码

placeholderForTable = (EncodedImage) theme.getImage("placeholderWithAnimate.png");
placeholderForTable = placeholderForTable.scaledEncoded(screenWidth, 30 + (screenWidth * 1 / 3));
BusinessForumImagesConnection bfic = new BusinessForumImagesConnection();
bfic.businessForumImagesConnectionMethod(new ActionListener() {

@Override
public void actionPerformed(ActionEvent evt) {
    DefaultListModel<Image> images;
    if (bfic.response != null) {
        for (Map<String, Object> entrySet : bfic.response) {
            String imgUrl = (String) entrySet.get("imgUrl");
            Image adImage = URLImage.createToStorage(placeholderForTable, imgUrl.substring(0, imgUrl.lastIndexOf(".")), + imgUrl, URLImage.RESIZE_SCALE);
            adsSlideImagesArray.add(adImage);
        }
    }

    ImageViewer imv = new ImageViewer();
    Container adsContainer = BoxLayout.encloseY(imv);

    if (adsSlideImagesArray != null) {
        slideIndex = 0;
        images = new DefaultListModel<>(adsSlideImagesArray);
        imv.setImage(images.getItemAt(0));
        imv.setImageList(images);
        imv.setSwipePlaceholder(Image.createImage(100, 100));
        Runnable r = new Runnable() {
            public void run() {
                if (slideIndex < images.getSize()) {
                    nextImage = (Image) images.getItemAt(slideIndex);
                    if (nextImage != null) {
                        imv.setImage(nextImage);
                    }
                    slideIndex++;
                } else {
                    slideIndex = 0;
                }
            }
        };
        if (uITimer == null) {
            uITimer = new UITimer(r);
        }
        if (uITimer != null) {
            uITimer.schedule(5000, true, f); //5 seconds
        }
    }
});

2)图像查看器中并不总是显示一些随机图像 . 它发生在模拟器和真实设备中 . 我已检查UrlImage是否已缓存在存储中 . 保存了所有文件,但其中一些文件从未在图像查看器中显示 . 而不是图像查看器,我在标签中设置图像图标并循环它们 . 所有标签都有各自的图标,但imageViewer中存在问题 . 代码与上述相同 .

1 回答

  • 0
    • 确保您的计时器触发并且没有人取消它 .

    • 您是否看到占位符而不是图像?这样的细节是必不可少的 .

    图像查看器堆栈中较深的图像将不会被预取 . 请注意, URLImage 不是为图像查看器设计的,因为 URLImage 可以调整图像大小,因此可能不是一个好主意 . 我们建议使用下载方法为图像查看器获取完整大小的图像,请参阅此旧帖子:https://www.codenameone.com/blog/image-viewer-from-the-web.html

相关问题