2016-08-14 47 views
1

我有幾個關於圖像查看器的問題。ImageViewer isnot fine fine codenameone

1)ImageViewer autoslides isnot working.The imageViewer最初工作時,首次啓動應用程序。但只要打開任何其他窗體&然後返回到包含imageViewer的窗體,autoslide不起作用。對於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 
     } 
    } 
}); 

2)

代碼中的一些隨機圖像並不總是顯示在圖像瀏覽器。它發生在兩個模擬器&真實的設備上。我檢查了UrlImage是否緩存或不存儲。保存了所有文件,但其中一些文件從未在圖像查看器中顯示。 而不是圖像查看器,我設置標籤中的圖像圖標並循環它們。所有標籤都有它們各自的圖標,但imageViewer存在問題。代碼與上面相同。

回答

0
  1. 確保您的計時器觸發並且沒有人取消它。

  2. 您是否看到佔位符而不是圖像?像這樣的細節至關重要。

圖像查看器堆棧內更深的圖像不會被預取。請注意,URLImage不是爲圖像查看器設計的,因此可能不是一個好主意,因爲URLImage調整圖像大小。我們推薦使用下載方法爲圖像查看器獲取完整大小的圖像看到這篇舊文章:https://www.codenameone.com/blog/image-viewer-from-the-web.html

+0

System.out.println(nextImage)裏面的runnable工作,所以我認爲計時器工作正常,但autoslide停止。而對於第二個問題,是啊,我只看到佔位符img而不是實際的圖像(Ps文件已存儲在.cn1文件夾中),但不顯示。 – beck

+0

'URLImage'是特殊的。再次,不要將它用於圖像查看器。我建議使用一個調試器並驗證計時器是動畫當前在屏幕上的視圖。 –

+0

謝謝你...我解決了它。對於定時器,我犯了一個小錯誤,如果它是空的,我已經初始化uiTimer。所以它第一次運行,如果我從其他形式迴歸到這種形式,它不起作用。在開始時設置uiTimer = null解決了問題。 – beck