2016-04-03 10 views
32

ho un'immagine di carico piuttosto semplice dal codice linea di server:Glide non caricando l'immagine reale e bloccato con segnaposto

Glide.with(view.getContext()).load(url).placeholder(R.drawable.default_profile).into(view);

Per qualche ragione, io sono sempre bloccati con il segnaposto viene visualizzata e non la immagine reale!

Mi sono assicurato che un URL valido e funzionante venga passato. E, se uso lo stesso codice senza il segnaposto funziona benissimo

Glide.with(view.getContext()).load(url).into(view);

Tutte le idee perché?

risposta

68

prova ad aggiungere .dontAnimate() causato anche da TransitionDrawable e sembra così perché dopo lo scorrimento non c'è animazione perché è memorizzata nella cache. il codice corretto è

Glide.with(view.getContext()).load(url).placeholder(R.drawable.default_profile).dontAnimate().into(view); 

spero di essere utile per voi

+3

Per qualche strana ragione, questo ha risolto il problema. La transizione è brutta però senza l'animazione. –

+0

Funziona per me. – Neela

+0

Il titolare del posto non esiste in Glide v4.0.0 – Kenji

0

Sembra strano ma l'unica cosa che posso indovinare è che il tuo URL è valido come hai già detto. Il tuo telecomando viene scaricato anche se viene applicato alla vista dell'immagine, ma il tuo segnaposto lo nasconde in qualche modo. Glide ha alcuni bug relativi alle cose dei segnaposto.

Il mio suggerimento sarebbe quello di provare qui di seguito:

Glide.with(view.getContext()).load(url). 
placeholder(R.drawable.default_profile).fitCenter().into(view); 

Quindi il trucco è segnaposto viene impostato tramite setImageDrawable() in modo che il ImageView sarà solo visualizzarla come al solito, ma vi dico Glide di utilizzare la fitCenter esplicitamente che si adatta l'immagine caricata piacevolmente all'interno della dimensione impostata di ImageView tramite una trasformazione e quindi impostata tramite setImageDrawable(). Poiché l'immagine adattata è perfetta, il centro disegnerà semplicemente l'immagine che copre l'intera area della vista.

Provalo.

1

Usa ProgressBar come il caricamento gif

Glide.with(context). 
     load(url) 
     .listener(new RequestListener<String, GlideDrawable>() { 
      @Override 
      public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
       progressBar.setVisibility(View.GONE); 
       return false; 
      } 

      @Override 
      public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
       progressBar.setVisibility(View.GONE); 
       return false; 
      } 
     }) 
     .crossFade(1000) 
     .into(imageView); 
19

Verificare che sia stato aggiunto il permesso Internet nel manifesto:

<uses-permission android:name="android.permission.INTERNET"/> 

Glide non attiva l'eccezione se non è disponibile la connettività Internet.

+2

Infatti! Questo ha risolto il problema per me. Penso che sarebbe più utile se la glide solleva un'eccezione quando lo sviluppatore commette un tale errore. –

+1

F ***. Dopo 3 anni con le app Android, questa cosa mi fa perdere ore, amico. – JMedinilla

1

Se qualcuno si imbatte in futuro potrebbe essere necessario aggiungere

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

Incerto l'esatto motivo di questo cambiamento, tuttavia il mio codice non ha funzionato, senza che l'autorizzazione, e ora lo fa con esso.