我从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;
}
任何帮助表示感谢。
答案 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()));