2016-04-03 3 views
32

Ich habe eine ziemlich Grundlast Bild von Server-Leitungscode:Glide nicht reelles Bild geladen und stecken mit Platzhalter

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

Aus irgendeinem Grund bin ich immer mit dem Platzhalter stecken angezeigt und nie die echtes Bild!

Ich habe sichergestellt, dass eine gültige und funktionierende URL übergeben wird. Und wenn ich den gleichen Code ohne den Platzhalter verwenden, funktioniert es gut

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

Irgendwelche Ideen warum?

Antwort

68

versuchen .dontAnimate() Es verursacht durch TransitionDrawable auch und es scheint so, weil nach scroll gibt es keine Animation, weil es zwischengespeichert wird. der richtige Code ist

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

Ich hoffe, nützlich zu sein für Sie

+3

Aus irgendeinem seltsamen Grund, löste dies das Problem. Der Übergang ist ohne Animation hässlich. –

+0

Es funktioniert für mich. – Neela

+0

Platzhalter ist in Glide v4.0.0 nicht vorhanden – Kenji

0

Scheint seltsam, aber nur was ich erraten könnte ist Ihre URL ist gültig, wie Sie bereits sagten. Ihre Fernbedienung wird heruntergeladen und wird sogar auf Ihre Bildansicht angewendet, aber Ihr Platzhalter versteckt sie irgendwie. Glide hat einige Fehler im Zusammenhang mit Platzhalter.

Mein Vorschlag wäre, unten, um zu versuchen:

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

Also der Trick ist Platzhalter über setImageDrawable() gesetzt wird, so dass die ImageView wird es wie gewohnt angezeigt werden, aber Sie sagen Glide die fitCenter explizit das zu verwendende passt das geladene Bild wird schön innerhalb der ImageView Größe über eine Transformation angelegt und dann über setImageDrawable() gesetzt. Da das angepasste Bild perfekt passt, wird in der Mitte nur das Bild gezeichnet, das den gesamten Bereich der Ansicht abdeckt.

Probieren Sie es aus.

1

Verwenden ProgressBar als Lade 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

Überprüfen Sie, ob Sie Internet Erlaubnis im Manifest hinzugefügt haben:

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

Glide löst keine Ausnahme aus, wenn keine Internetverbindung besteht.

+2

In der Tat! Dies löste die Probleme für mich. Ich denke, es wäre nützlicher, wenn glide eine Exception auslöst, wenn Entwickler einen solchen Fehler macht. –

+1

F ***. Nach 3 Jahren mit Android-Apps bringt mich dieses Ding immer noch Stunden, Mann. – JMedinilla

1

Wenn jemand über diese in die Zukunft kommt möglicherweise

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

Ungewiss der genaue Grund für diese Änderung hinzufügen müssen, dennoch meinen Code nicht ohne diese Erlaubnis nicht funktioniert, und jetzt tut mit ihm.