我有幾個關於圖像查看器的問題。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存在問題。代碼與上面相同。
System.out.println(nextImage)裏面的runnable工作,所以我認爲計時器工作正常,但autoslide停止。而對於第二個問題,是啊,我只看到佔位符img而不是實際的圖像(Ps文件已存儲在.cn1文件夾中),但不顯示。 – beck
'URLImage'是特殊的。再次,不要將它用於圖像查看器。我建議使用一個調試器並驗證計時器是動畫當前在屏幕上的視圖。 –
謝謝你...我解決了它。對於定時器,我犯了一個小錯誤,如果它是空的,我已經初始化uiTimer。所以它第一次運行,如果我從其他形式迴歸到這種形式,它不起作用。在開始時設置uiTimer = null解決了問題。 – beck