Titanium Lazy仅在图像视图可见时加载

时间:2014-06-23 20:10:45

标签: ios titanium lazy-loading

我有10个图像视图相互堆叠。 (for loop)

其中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;


    }

[..]

这段代码片段基本上是说,一旦循环执行完就显示最后一个容器,就会将容器堆叠在一起。

稍后我为每个图像视图都有一个onclick事件,如果单击它,它将删除堆栈顶部的容器,并使下面的容器可见。

我想要做的是,当容器变得可见时,仅加载imageView远程图像。现在,它会尝试加载可见或不可见的图像。

1 个答案:

答案 0 :(得分: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;