私は画像ビューアに関するいくつかの質問があります。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に問題があります。コードは上記と同じです。
System.out.println(nextImage)runnableの内部で動作するので、タイマーは正常に動作していますが、オートスライドが停止すると思います。 2番目の質問では、実際の画像(Psは既に.cn1フォルダに保存されています)の代わりにプレースホルダimgだけが表示されていますが、表示されません。 – beck
URLImageは特別です。再度、イメージビューアには使用しないでください。私は、デバッガを使用し、タイマーが現在画面に表示されているビューをアニメーション化していることを確認することをお勧めします。 –
よかったです。私はそれを解決しました。タイマーの場合、nullであれば私はuiTimerを初期化したという小さな間違いをしました。それは初めて実行され、私が他のフォームからこのフォームに復帰すれば、それはうまく動作しません。初めにuiTimer = nullを設定すると問題が解決します。 – beck