Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 毕加索图像加载回调_Java_Android_Picasso - Fatal编程技术网

Java 毕加索图像加载回调

Java 毕加索图像加载回调,java,android,picasso,Java,Android,Picasso,我想使用毕加索加载三个连续的图像,一个在列表视图中,一个在另一个上面。使用毕加索提供的方法使这变得容易。但是,由于这些图像在不同的时间加载,因此当图像进入时会产生闪烁效果。例如,有时图像2出现在图像1之前,当图像1加载时,会导致不自然的口吃。如果我可以将listview的可见性设置为“不可见”,直到所有图像都可以显示,那就更好了。然而,我找不到毕加索的回调方法可以在图像加载时发出信号 有人知道用毕加索解决这种情况的方法吗 谢谢您可以使用该对象。一旦target1收到回调,您就可以下载第二个资产,

我想使用毕加索加载三个连续的图像,一个在列表视图中,一个在另一个上面。使用毕加索提供的方法使这变得容易。但是,由于这些图像在不同的时间加载,因此当图像进入时会产生闪烁效果。例如,有时图像2出现在图像1之前,当图像1加载时,会导致不自然的口吃。如果我可以将listview的可见性设置为“不可见”,直到所有图像都可以显示,那就更好了。然而,我找不到毕加索的回调方法可以在图像加载时发出信号

有人知道用毕加索解决这种情况的方法吗


谢谢

您可以使用该对象。一旦
target1
收到回调,您就可以下载第二个资产,然后在
target2
中获取回调,然后触发第三次下载。

into方法提供了第二个参数,它是对成功和失败的回调。您可以使用它来跟踪何时调用了这三个函数,并立即对它们的可见性进行操作


Javadoc:

您可以使用毕加索实现回调,如下所示:

ImageHandler.getSharedInstance(getApplicationContext()).load(imString).skipMemoryCache().resize(width, height).into(image, new Callback() {
            @Override
            public void onSuccess() {
                layout.setVisibility(View.VISIBLE);
            }

            @Override
            public void onError() {

            }
        });
}
public class ImageHandler {

    private static Picasso instance;

    public static Picasso getSharedInstance(Context context)
    {
        if(instance == null)
        {
            instance = new Picasso.Builder(context).executor(Executors.newSingleThreadExecutor()).memoryCache(Cache.NONE).indicatorsEnabled(true).build();
        }
        return instance;
    }
}
my ImageHandler类的实现如下所示:

ImageHandler.getSharedInstance(getApplicationContext()).load(imString).skipMemoryCache().resize(width, height).into(image, new Callback() {
            @Override
            public void onSuccess() {
                layout.setVisibility(View.VISIBLE);
            }

            @Override
            public void onError() {

            }
        });
}
public class ImageHandler {

    private static Picasso instance;

    public static Picasso getSharedInstance(Context context)
    {
        if(instance == null)
        {
            instance = new Picasso.Builder(context).executor(Executors.newSingleThreadExecutor()).memoryCache(Cache.NONE).indicatorsEnabled(true).build();
        }
        return instance;
    }
}

下面是一个如何弹劾毕加索图片加载回调的简单示例:

Picasso.with(MainActivity.this)
            .load(imageUrl)
            .into(imageView, new com.squareup.picasso.Callback() {
                        @Override
                        public void onSuccess() {
                            //do smth when picture is loaded successfully

                        }

                        @Override
                        public void onError() {
                            //do smth when there is picture loading error
                        }
                    });
在毕加索的最新版本中,onError接收到一个异常作为参数,并使用get()而不是with()


这是通过简单的picasso回调将图像url加载到imageview中

           Picasso.with(this)
            .load(Picurl)
            .into(Imageview, new Callback() {
                        @Override
                        public void onSuccess() {

                        }

                        @Override
                        public void onError() {


                        }
                    }
            );
private void loadImage() {
    Picasso.with(this)
            .load(PicURL)
            .into(mContentTarget);
  }


private Target mContentTarget = new Target() {
    @Override
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
    Imageview.setImageBitmap(bitmap);
    }

    @Override
    public void onBitmapFailed(Drawable errorDrawable) {
    }

    @Override
    public void onPrepareLoad(Drawable placeHolderDrawable) {
    }
};
这是毕加索图像加载和更多回调

           Picasso.with(this)
            .load(Picurl)
            .into(Imageview, new Callback() {
                        @Override
                        public void onSuccess() {

                        }

                        @Override
                        public void onError() {


                        }
                    }
            );
private void loadImage() {
    Picasso.with(this)
            .load(PicURL)
            .into(mContentTarget);
  }


private Target mContentTarget = new Target() {
    @Override
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
    Imageview.setImageBitmap(bitmap);
    }

    @Override
    public void onBitmapFailed(Drawable errorDrawable) {
    }

    @Override
    public void onPrepareLoad(Drawable placeHolderDrawable) {
    }
};

@我认为OP问这个问题的方式很好。他解释了他在问题中已经做了什么(他已经实现了图像加载,但正在经历闪烁),并询问毕加索是否提供某种图像加载回调来解决问题。这一点都没有问题。@jamrockRay现在应该得到修复。回调不会被调用。这非常浪费时间,而且比并发加载要花费更长的时间。您可以在代码中添加一些进一步的解释。