2014-09-09 6 views
5

पिकासो असीमित है, इसलिए मैं सोच रहा था कि कोई अतिरिक्त तरीका निष्पादित करने से पहले कोई छवि पूरी तरह से लोड होने पर परीक्षण कर सकती है या नहीं?यह जांचने के लिए कि क्या चित्र पिकासो

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

उत्तर

6

अधिभारित विधि का उपयोग .into(ImageView target, Callback callback) आपके मामले के लिए उपयुक्त है। आप आधार कार्यान्वयन का उपयोग करें या बेस की तरह अपने खुद के विस्तार कर सकते हैं:

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

      } 

      @Override 
      public void onError() { 

      } 
     }); 

विस्तारित संस्करण:

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); 
    } 

} 

उपयोग:

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

      } 

      @Override 
      public void onError(ImageView target) { 

      } 
     }); 
+0

किसी विशेष प्रकार के यूआरएल की एक छवि पिकासो द्वारा प्रदर्शित नहीं की जा रही है। इसलिए, मैं यह निर्धारित करने की कोशिश कर रहा हूं कि पिकासो पहली बार छवि को डाउनलोड करने में सक्षम था या नहीं। क्या ये दो कॉल बैक विधियां मुझे यह निर्धारित करने में मदद कर सकती हैं कि डाउनलोड विफल हुआ है या क्या वे छवि दृश्य में छवि लोड करने के लिए केवल कॉलबैक विधियां हैं और छवि डाउनलोड के साथ कुछ लेना देना नहीं है? धन्यवाद! – rgv

+0

@ निकोला Despotoski मैं बिटमैप प्राप्त करने के लिए लक्ष्य में मेरी सभी छवियों को लोड कर रहा हूँ। अब मैं यूआरएल जानना चाहता हूं कि किस बिटमैप को लोड किया गया है। क्या मैं लक्ष्य में छवि यूआरएल का अनुरोध कर सकता हूं? –

+0

@HarshalBhatt सबसे आसान तरीका है कन्स्ट्रक्टर में 'स्ट्रिंग' तर्क जोड़ने के लिए जो यूआरएल रखेगा। –

6

तो छवि पूरी तरह से भरी हुई है यह निर्धारित किया जाएगा ImageView पर तुल्यकालिक रूप से।

आप इस पर जोर देने के लिए कॉलबैक का उपयोग कर सकते हैं।

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. 
} 
संबंधित मुद्दे