ImageViewer工作不正常codenameone

ImageViewer工作不正常codenameone,codenameone,Codenameone,关于图像查看器,我有几个问题 1) ImageViewer自动滑动不工作。ImageViewer最初在应用程序首次启动时工作。但是,一旦打开任何其他表单&然后返回到包含imageViewer的表单,自动滑动就不起作用了 img查看器自动幻灯片代码 placeholderForTable = (EncodedImage) theme.getImage("placeholderWithAnimate.png"); placeholderForTable = placeholderForTable.s

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

1) ImageViewer自动滑动不工作。ImageViewer最初在应用程序首次启动时工作。但是,一旦打开任何其他表单&然后返回到包含imageViewer的表单,自动滑动就不起作用了

img查看器自动幻灯片代码

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
        }
    }
});
placeholderForTable=(EncodedImage)theme.getImage(“placeholderWithAnimate.png”);
占位符FORTABLE=占位符FORTABLE.scaledEncoded(屏幕宽度,30+(屏幕宽度*1/3));
BusinessForumImagesConnection bfic=新业务forumimagesconnection();
bfic.businessForumImagesConnectionMethod(新ActionListener()){
@凌驾
已执行的公共无效操作(操作事件evt){
模型图像;
if(bfic.response!=null){
for(映射入口集:bfic.response){
字符串imgUrl=(String)entrySet.get(“imgUrl”);
Image adImage=urlmimage.createToStorage(占位符fortable,imgUrl.substring(0,imgUrl.lastIndexOf(“.”))+imgUrl,urlmimage.RESIZE\u SCALE);
adslidemagesarray.add(adImage);
}
}
ImageViewer imv=新的ImageViewer();
容器adscanner=BoxLayout.encloseY(imv);
如果(ADSSLIDEMAGESARRAY!=null){
slideIndex=0;
图像=新的默认列表模型(ADSSLIDEMAGESARRAY);
imv.setImage(images.getItemAt(0));
imv.setImageList(图像);
imv.setswipplaceholder(Image.createImage(100100));
Runnable r=新的Runnable(){
公开募捐{
if(slideIndex
2) 有些随机图像并不总是显示在图像查看器中。它发生在模拟器和真实设备中。我已经检查了UrlImage是否缓存在存储器中。保存了所有文件,但其中一些从未显示在图像查看器中。 我没有使用图像查看器,而是在标签中设置图像图标并循环它们。所有标签都有各自的图标,但imageViewer中存在一个问题。代码与上面相同

  • 确保你的计时器启动并且没有人取消它

  • 你看到的是占位符而不是图像吗?像这样的细节很重要

  • 图像查看器堆栈中较深的图像将不会预取。请注意,
    urlmeage
    不是为图像查看器设计的,这可能是一个坏主意,因为
    urlmeage
    会调整图像的大小。我们建议使用下载方法为图像查看器获取全尺寸图像。请参阅这篇旧文章:

  • 确保你的计时器启动并且没有人取消它

  • 你看到的是占位符而不是图像吗?像这样的细节很重要


  • 图像查看器堆栈中较深的图像不会被预取。请注意,
    urlmeage
    不是为图像查看器设计的,这可能是一个坏主意,因为
    urlmeage
    会调整图像的大小。我们建议使用下载方法为图像查看器获取全尺寸图像。请参阅此旧帖子:

    System.out.prirunnable内部的ntln(nextImage)工作正常,因此我认为计时器工作正常,但autoslide停止。对于第二个问题,是的,我只看到占位符img,而不是实际图像(Ps文件已存储在.cn1文件夹中)但它不会显示。
    urlmimage
    是特殊的。同样,不要将其用于图像查看器。我建议使用调试器并验证计时器是否正在为当前屏幕上的视图设置动画。谢谢……我解决了它。对于计时器,我犯了一个小错误,即如果uiTimer为null,我已初始化uiTimer。因此它将首次运行,如果我从其他表单返回到此表单,它不起作用。在开始时设置uiTimer=null可以解决问题。runnable内部的System.out.println(nextImage)可以工作,因此我认为计时器工作正常,但自动滑动停止。对于第二个问题,是的,我只看到占位符img,而不是实际图像(Ps文件已存储在.cn1文件夹中)但它不会显示。
    urlmimage
    是特殊的。同样,不要将其用于图像查看器。我建议使用调试器并验证计时器是否正在为当前屏幕上的视图设置动画。谢谢……我解决了它。对于计时器,我犯了一个小错误,即如果uiTimer为null,我已初始化uiTimer。因此它将首次运行,如果我从其他表单返回此表单,它不起作用。在开始时设置uiTimer=null可以解决此问题。