2015-05-28 11 views
8

Sto lavorando all'applicazione demo in cui sto usando la libreria Picasso v2.5.2. Funziona bene su tutte le versioni del sistema operativo Android, ma non su lollipop.Le immagini non si caricano in Android 5.0 utilizzando la libreria picasso

Immagine la cui dimensione è 130 KB che non viene caricata per me. Le immagini di dimensioni inferiori si stanno caricando correttamente.

Ecco il mio codice per il download di bitmap e impostato su imageview.

target = new Target() { 
    @Override 
    public void onPrepareLoad(Drawable drawable) {} 

    @Override 
    public void onBitmapLoaded(Bitmap bitmap, LoadedFrom arg1) { 
     if(bitmap != null) { 
      imageView.setImageBitmap(bitmap); 
     } 
    } 

    @Override 
    public void onBitmapFailed(Drawable drawable) {} 
}; 

Picasso.with(this).load(URL).into(target); 

io non sono sicuro di quello che roba in più che ho a che fare con questo in modo che lavorerò sul lecca-lecca anche o questo è bug in lib?

risposta

0

Perché dovresti utilizzare uno Target se hai solo bisogno di caricare l'immagine nello ImageView? Basta usare questo:

Picasso.with(this).load(URL).into(imageView, new Callback() 
    { 
     @Override 
     public void onSuccess() 
     { 
      //Dimiss progress dialog here 
     } 

     @Override 
     public void onError() 
     { 
      //And here 
     } 
    }); 

Per la documentazione sguardo here.

+0

Sto chiudendo la finestra di dialogo dell'avanzamento una volta che l'immagine è stata caricata. Ho avuto quella riga di codice in 'onBitmapLoaded' –

+0

@Williams vedere la mia modifica. Puoi usare un 'Callback' per questo. Ti suggerirei di usare solo un 'Target' se hai davvero bisogno di usarlo. –

+0

Okay, ci proverò e ti aggiornerò per lo stesso. –

13

È un problema noto. Il problema è che Picasso mantiene un riferimento debole per lo Target. Per farlo funzionare è necessario renderlo forte, ad esempio memorizzando uno Target come tag di visualizzazione.

target = new Target() { 
    @Override 
    public void onPrepareLoad(Drawable drawable) {} 

    @Override 
    public void onBitmapLoaded(Bitmap bitmap, LoadedFrom arg1) { 
     if(bitmap != null) { 
      imageView.setImageBitmap(bitmap); 
     } 
    } 

    @Override 
    public void onBitmapFailed(Drawable drawable) {} 
    }; 

imageView.setTag(target); 
Picasso.with(this).load(URL).into((Target) imageView.getTag()); 

EDIT:

vi suggerisco di utilizzare Glide, è molto simile a Picasso, e anche consigliato da Google. E come puoi vedere alla fine di this thread, lo sviluppatore originale risolve questo problema BitmapFactory usando un buffer extra.

+0

Non funziona per me :( –

+0

stesso numero I sollevato qui https://github.com/square/picasso/issues/1054 –

+0

Controllare le mie modifiche, per favore. – rom4ek

0
 Picasso.with(this).load("http://webneel.com/wallpaper/sites/default/files/images/04-2013/island-beach-scenery-wallpaper.jpg").placeholder(R.mipmap.ic_launcher).fit().into(imageView, new Callback()  { 
    @Override public void onSuccess() 
    { 
    } 
    @Override public void onError() 
    { 
    } 
    }); 

fit() vi aiuterà a caricare immagine.E utilizzare Android: adjustViewBounds = "true" nel tuo ImageView in XML.

Problemi correlati