2016-08-14 2 views
1

У меня есть пара вопросов относительно просмотра изображений.ImageViewer не работает отлично codenameone

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

2) Некоторые случайные изображения не всегда отображаются в средстве просмотра изображений. Это происходит как в симуляторе & реальных устройствах. Я проверил, если UrlImage кэшируется или нет в хранилище. Все файлы сохранены, но некоторые из них никогда не отображаются в средстве просмотра изображений. Вместо изображения Viewer, я устанавливаю значок изображения в метку и зацикливаю их. У всех этикеток есть соответствующие значки, но в imageViewer есть проблема. Код такой же, как указано выше.

ответ

0
  1. Удостоверяются, что ваш таймер срабатывает, и никто его не отменил.

  2. Вы видите место вместо изображения? Такие детали необходимы.

Изображения, которые находятся глубже в стеке просмотра изображений, не будут предварительно заданы. Обратите внимание, что URLImage не был предназначен для просмотра изображений, и, вероятно, это плохая идея, так как URLImage изменяет размер изображения. Мы рекомендуем использовать способ загрузки, чтобы получить полноразмерные изображения для просмотра изображений. Посмотрите это старое сообщение: https://www.codenameone.com/blog/image-viewer-from-the-web.html

+0

System.out.println (nextImage) внутри runnable works, поэтому я думаю, что таймер работает нормально, но автоспуск останавливается. И для второго вопроса, да, я вижу только placeholder img вместо фактического изображения (Ps файл уже сохранен в папке .cn1), но он не отображается. – beck

+0

'URLImage' является специальным. Опять же, не используйте его для просмотра изображений. Я предлагаю использовать отладчик и проверять, что таймер оживляет представление, которое в настоящее время находится на экране. –

+0

thankyou ... я решил это. Для таймера я сделал небольшую ошибку, что инициализировал uiTimer, если он равен нулю. Таким образом, он запускается в первый раз, и если я вернусь к этой форме из других форм, это не сработает. Установка uiTimer = null в начале решения проблемы. – beck

Смежные вопросы