2014-09-09 17 views
5

ile tamamen yüklenip yüklenmediği nasıl test edilir? Picasso eşzamansızdır, bu yüzden herhangi bir ek kod çalıştırmadan önce bir görüntünün tam olarak yüklenip yüklenmediğini test etmenin herhangi bir yolu olup olmadığını merak ediyordum?Bir görüntünün Picasso

Picasso.with(context).load(imageURI).into(ImageView); 
// image fully loaded? do something else .. 

cevap

6

Durumunuz için .into(ImageView target, Callback callback) aşırı yüklü yöntemi kullanmak uygundur. Sen taban uygulamasını kullanabilir veya Base gibi kendi uzatabilirsiniz:

Picasso.with(context).load(url).into(target, new Callback(){ 
      @Override 
      public void onSuccess() { 

      } 

      @Override 
      public void onError() { 

      } 
     }); 

Genişletilmiş sürümü:

package main.java.app.picasso.test; 

/** 
* Created by nikola on 9/9/14. 
*/ 
public abstract class TargetCallback implements Callback { 
    private ImageView mTarget; 

    public abstract void onSuccess(ImageView target); 
    public abstract void onError(ImageView target); 
    public TargetCallback(ImageView imageView){ 
     mTarget = imageView; 
    } 
    @Override 
    public void onSuccess() { 
     onSuccess(mTarget); 
    } 

    @Override 
    public void onError() { 
     onError(mTarget); 
    } 

} 

Kullanımı: Resim yüklendikten tamamen Eğer

Picasso.with(context).load(url).into(target, new TargetCallback(target) { 
      @Override 
      public void onSuccess(ImageView target) { 

      } 

      @Override 
      public void onError(ImageView target) { 

      } 
     }); 
+0

Belirli bir url türünden bir resim, picasso tarafından görüntülenmiyor. Bu nedenle Picasso'nun görüntüyü ilk olarak indirip yükleyemeyeceğini belirlemeye çalışıyorum. Bu iki geri arama yöntemleri, indirme işleminin başarısız olup olmadığını belirlemede yardımcı olabilir mi yoksa yalnızca resim görüntüsüne resim yüklemek için geri arama yöntemleri mi ve resim yüklemeyle ilgisi yok mu? Teşekkürler! – rgv

+0

@Nikola Despotoski Bitmap'e ulaşmak için tüm resimlerimi hedefe yüklüyorum. Şimdi hangi bitmap yüklendiğinden url bilmek istiyorum. Hedefte görüntü URL'si talep edebilir miyim? –

+0

@HarshalBhatt En kolay yol, URL'yi tutacak kurucuya 'String' argümanını eklemektir. Callback() yerine com.squareup.picasso.Callback() kullanarak –

6

o kurulacaktır ImageView üzerinde senkronize olarak.

Bunu ileri almak için geri bildirimi kullanabilirsiniz.

final AtomicBoolean loaded = new AtomicBoolean(); 
Picasso.with(context).load(imageURI).into(imageView, new Callback.EmptyCallback() { 
    @Override public void onSuccess() { 
    loaded.set(true); 
    } 
}); 
if (loaded.get()) { 
    // The image was immediately available. 
} 
İlgili konular