从url加载之前绘制图像视图的高度和宽度

时间:2016-05-01 06:50:07

标签: android imageview picasso

我从API获取图像的高度和宽度。我正在使用Picasso从网址加载图片。我的查询是,一旦我们得到API响应,我们如何在Picasso实际图像加载之前根据它的高度和宽度绘制图像。我在resize()方法中将图像的高度和宽度设置为Picasso。

但是,一旦图像成功下载,毕加索就会直接加载图像。这里的问题是我想在预加载状态下绘制图像的高度和宽度。

/*
* set image view's height and width from API 
*/
int imageViewHeight = getHeight();
int imageViewWidth = getWidth();

// picasso to laod an image from url
Picasso.with(view.getContext())
                    .load(url).placeholder(getGradientDrawable())
                    .resize(imageViewWidth, imageViewHeight)
                    .centerInside()
                    .into(imageView);

// gradient for placeholder
static GradientDrawable getGradientDrawable() {
        GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setShape(GradientDrawable.RECTANGLE);
        gradientDrawable.setColor(Color.GRAY);

        return gradientDrawable;
    }

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解你,但如果你想在毕加索进行背景下载时想要一个占位符,你可以使用placeholder()功能,如下所示:

Picasso.with(context).load(url).placeholder(drawable).into(imageview);

您可以使用所需的宽度和高度创建drawable或使用resource ID

答案 1 :(得分:0)

这对我有帮助,在调用Picasso库加载URL之前,将imageview max和min的高度和宽度设置为图像的尺寸。它可能会帮助正在看这个的其他人。

imageView.setMinimumWidth(Integer.parseInt(this.reply_list_full.get(position).getImage_width()));
imageView.setMinimumHeight(Integer.parseInt(this.reply_list_full.get(position).getImage_width()));

imageView.setMaxWidth(Integer.parseInt(this.reply_list_full.get(position).getImage_width()));
imageView.setMaxHeight(Integer.parseInt(this.reply_list_full.get(position).getImage_width()));