我使用picasso庫來下載圖像並將圖像加載到imageView中。現在我想知道如何在imageViews中加載它們之前獲取圖像寬度和高度?使用畢加索庫獲取圖像寬度和高度
我有一個適配器,其中包含兩個imageView(其中一個是垂直的,另一個是水平的)的列表視圖。取決於我想要將圖像加載到其中一個圖像瀏覽的圖像寬度和高度。
我使用picasso庫來下載圖像並將圖像加載到imageView中。現在我想知道如何在imageViews中加載它們之前獲取圖像寬度和高度?使用畢加索庫獲取圖像寬度和高度
我有一個適配器,其中包含兩個imageView(其中一個是垂直的,另一個是水平的)的列表視圖。取決於我想要將圖像加載到其中一個圖像瀏覽的圖像寬度和高度。
只能下載後得到位圖的尺寸 - 你必須使用同步方法調用是這樣的:
final Bitmap image = Picasso.with(this).load("http://").get();
int width = image.getWidth();
int height = image.getHeight();
在此之後可以再次調用具有相同的URL加載(它會從緩存中獲取):
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) {
}
});
只是爲了完成答案:你不能在主線程中進行此調用,因爲它是同步的。因此,您需要啓動例如一個AsyncTask,它在後臺執行此操作,並在加載圖像時返回。 – Klaus 2014-09-25 08:21:58
此外,這與RecyclerView不兼容 – 2016-03-08 07:35:46
由於畢加索的異步性質,以及'ViewHolders'將被回收的事實,'RecyclerView'效果不佳,因爲您的'ViewHolders'將被回收(滾動瀏覽Feed時大量圖像彈出到不正確的位置因爲他們正在加載到他們的舊視圖)。 – 2016-08-26 03:39:03
爲我工作。
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() {
}
});
爲什麼要在onSuccess方法中再次加載圖像? – 2017-10-03 13:27:49
入住這http://stackoverflow.com/questions/8880376/how-to-get-height-and-width-of-a-image-used-in-android – Aniruddha 2014-08-27 08:56:56
你可以用'INT finalHeight = iv.getMeasuredHeight(); int finalWidth = iv.getMeasuredWidth();',其中'iv'是您的ImageView對象。 – Aniruddha 2014-08-27 08:58:01
@Aniruddha它只是在imageview加載圖像後工作!但我想知道圖像大小befor加載 – user2549089 2014-08-27 09:03:27