2016-08-14 7 views
1

私は画像ビューアに関するいくつかの質問があります。ImageViewerはうまく動作しません。コードネーム

1)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 
     } 
    } 
}); 

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の内部で動作するので、タイマーは正常に動作していますが、オートスライドが停止すると思います。 2番目の質問では、実際の画像(Psは既に.cn1フォルダに保存されています)の代わりにプレースホルダimgだけが表示されていますが、表示されません。 – beck

+0

URLImageは特別です。再度、イメージビューアには使用しないでください。私は、デバッガを使用し、タイマーが現在画面に表示されているビューをアニメーション化していることを確認することをお勧めします。 –

+0

よかったです。私はそれを解決しました。タイマーの場合、nullであれば私はuiTimerを初期化したという小さな間違いをしました。それは初めて実行され、私が他のフォームからこのフォームに復帰すれば、それはうまく動作しません。初めにuiTimer = nullを設定すると問題が解決します。 – beck

関連する問題