2014-06-23 78 views
1

我有10個圖像視圖堆疊在一起。 (for循環)僅當圖像視圖可見時,纔會延遲加載

其中9個設置爲visible = false。

其中1個設置爲visible = true。

我想知道是否有一種方法只在imageview可見性設置爲true時才加載圖像。即在圖像視圖從堆棧移除之後。

我遇到的麻煩是它在堆棧中同時加載所有圖像,導致所有內容都變慢。

for (var i = 0; i < peopleJson.users.length; i++) { 

      //create containers to store every child object 

      containers[i] = Titanium.UI.createView({ 
       id : 'container', 
       visible : false, 
       width : '100%', 
       zIndex : '0', 

      }); 


      imageSwipeView[i] = Titanium.UI.createImageView({ 
       image : peopleJson.users[i].pictures[0], 
       visible : true, 
       containerObj : containers[i], 
       containerObjPrev : containers[temp], 
       pictures : peopleJson.users[i].pictures, 
       indImageView : indImageView[i], 
       basket : LabelBasket[temp], 
       top : 0, 
       zIndex : 2, 
       width : '100%', 
       defaultImage : 'images/plainbg.png', 
       height : 510, 

      }); 

    containers[i].add(imageSwipeView[i]); 

    win.add(containers[i]); 

    if (i == (peopleJson.users.length - 1)) { 

     //show last container when for loop is executed 

     containers[i].visible = true; 
     $.view_indicator.visible = false; 


    } 

[..] 

該代碼片段基本上說,堆疊彼此的容器ontop,一旦循環已執行顯示最後一個容器。

稍後,我對每個圖像視圖都有一個onclick事件,如果單擊它,它將刪除堆棧頂部的容器,並使其下面的容器可見。

我想要做的只是當容器變得可見時,加載imageView遠程圖像。現在,它會嘗試加載可見或不可見的圖像。

+0

發佈一些代碼顯示你所擁有的,並在那裏究竟是你的問題。 – daniula

+0

檢查修改後,謝謝 – user3754111

回答

1

你可以嘗試設置路徑,圖像以不同的屬性:

imageSwipeView[i] = Titanium.UI.createImageView({ 
    _image : peopleJson.users[i].pictures[0], 
    ... 
}) 

,當你設置visible = true更新image屬性:

containers[i].visible = true; 
if (!imageSwipeView[i].image) { 
    imageSwipeView[i].image = imageSwipeView[i]._image; 
} 

$.view_indicator.visible = false; 
+0

謝謝我會試試這個。不應該延遲加載意味着它按需加載?即你所描述的,沒有我不必擔心這個 – user3754111

+0

完美的工作。剛剛嘗試過。不知道爲什麼它不是默認的延遲加載。 – user3754111

+0

圖片正在加載,只要您將它們添加到視圖中即可。 – daniula