毕加索的目标和centerCrop()和适合()

时间:2016-01-22 06:40:17

标签: android picasso

我的服务器上有一个图像,我想在我的Android客户端上使用Picasso显示它。 我想在Picasso上加载图片时添加默认图片,所以我使用的是Target,如下所示:

Picasso.with(UserActivity.this).load(imageUri.toString()).transform(new RoundedTransformation(500, 1)).into(
new Target() {
    @Override
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
        userPic.setImageBitmap(bitmap);
    }

    @Override
    public void onBitmapFailed(Drawable drawable) {
        userPic.setImageBitmap(defaultDrawable);
    }

    @Override
    public void onPrepareLoad(Drawable drawable) {
        userPic.setImageBitmap(defaultDrawable);
    }
});

我想centerCrop()fit()此图片,但它给了我一个错误,它告诉我,我不能将它们与Target一起使用。无论如何在毕加索上使用这些功能?为什么他们不允许使用Target这两个函数?

3 个答案:

答案 0 :(得分:10)

您无需使用Target来完成目标。

旁注,我不确定您是否可以同时使用fit()centerCrop()

请参阅此example

Picasso.with(context)
    .load(url) // Equivalent of what ends up in onBitmapLoaded
    .placeholder(R.drawable.user_placeholder) // Equivalent of what ends up in onPrepareLoad
    .error(R.drawable.user_placeholder_error) // Equivalent of what ends up in onBitmapFailed
    .centerCrop()
    .fit()
    .into(imageView);

答案 1 :(得分:3)

试试这个

Picasso.with(context)
  .load(url)
  .resize(50, 50)
  .centerCrop()
  .fit()
  .placeholder(defaultImageLink)
  .error(R.drawable.user_placeholder_error)
  .transform(new RoundedTransformation(500, 1))
  .into(imageView)

答案 2 :(得分:2)

我们还可以根据图像视图的要求调整图像大小,如果图像太大,将节省内存使用量。

回调方法可用于隐藏进度条并在图像中显示一些文本视图加载失败。

Picasso.with(context)
.load(url)
.placeholder(R.drawable.placeholder_img)
.error(R.drawable.error_img)
.resize(450, 420)
.centerCrop()
.fit()
.into(imageView, new Callback() {
        @Override
        public void onSuccess() {
            progressBar.setVisibility(View.GONE);
        }

        @Override
        public void onError() {
            progressBar.setVisibility(View.GONE);
            image_failed_text.setVisibility(View.VISIBLE);
        }
    });