我使用picasso库下载并将图片加载到imageView中。现在我想知道在将它们加载到imageViews之前我如何获得图像的宽度和高度?
我有一个包含两个imageView的适配器的列表视图(其中一个是垂直的,另一个是水平的)。取决于图像宽度和高度我想将图像加载到其中一个图像视图中。
答案 0 :(得分:33)
只有在下载后才能获得位图尺寸 - 你必须使用这样的同步方法调用:
final Bitmap image = Picasso.with(this).load("http://").get();
int width = image.getWidth();
int height = image.getHeight();
在此之后,您可以再次使用相同的URL调用load(它将从缓存中获取):
Picasso.with(this).load("http://").into(imageView)
修改:或许更好的方式:
Picasso.with(this).load("http://").into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
imgView.setImageBitmap(bitmap);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
答案 1 :(得分:2)
为我工作。
Picasso.with(context).load(imageLink).into(imageView, new Callback() {
@Override
public void onSuccess() {
Picasso.with(context).load(imageLink).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Log.d("ComeHere ", " W : "+ width+" H : "+height);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
}
@Override
public void onError() {
}
});