2014-06-23 47 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