2014-09-12 14 views
10

Sto utilizzando la libreria Picasso per caricare l'immagine dall'URL. Il codice che ho usato è qui sotto.android get Immagine disegnata dopo il caricamento di picasso

Picasso.with(getContext()).load(url).placeholder(R.drawable.placeholder) 
       .error(R.drawable.placeholder).into(imageView); 

Quello che voglio fare è ottenere l'immagine caricata dall'URL. Ho utilizzato

Drawable image = imageView.getDrawable(); 

Tuttavia, questo restituirà sempre l'immagine segnaposto anziché il caricamento dell'immagine dall'URL. Ragazzi, avete qualche idea? Come dovrei accedere all'immagine drawable che è appena stata caricata dall'URL.

Grazie in anticipo.

risposta

17

Questo perché l'immagine viene caricata in modo asincrono. È necessario per ottenere il drawable quando è finito il caricamento nella vista:

Target target = new Target() { 
      @Override 
      public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
       imageView.setImageBitmap(bitmap); 
       Drawable image = imageView.getDrawable(); 
      } 

     @Override 
     public void onBitmapFailed(Drawable errorDrawable) {} 

     @Override 
     public void onPrepareLoad(Drawable placeHolderDrawable) {} 
    }; 

    Picasso.with(this).load("url").into(target); 
+0

Come posso usare LoadBitmap()? Devo chiamare Picasso due volte? – Shumin

+0

No, questo è solo un metodo vuoto che chiameresti per caricare l'immagine. Non ne hai bisogno. (vedi risposta aggiornata) – Shane

+0

questo è inutile, 'fit, centercrop' non funzionerà, che senso usare Picasso poi ?? si può ottenere con la normale drawable callback Picasso: 'in (targetImageView, nuova richiamata() { \t \t \t @Override pubblico onSuccess void() { targetImageView.getDrawable();} ' – user924

1
 mImageView.post(new Runnable() { 
      @Override 
      public void run() { 
       mPicasso = Picasso.with(mImageView.getContext()); 
       mPicasso.load(IMAGE_URL) 
         .resize(mImageView.getWidth(), mImageView.getHeight()) 
         .centerCrop() 
         .into(mImageView, new com.squareup.picasso.Callback() { 
          @Override 
          public void onSuccess() { 
           Drawable drawable = mImageView.getDrawable(); 
           // ... 
          } 

          @Override 
          public void onError() { 
           // ... 
          } 
         }); 
      } 
     }); 
+1

È possibile aggiungere qualche spiegazione perché questo codice risolve il problema. – mustaccio

Problemi correlati