J'ai une image de charge assez basique à partir du code de ligne du serveur:
Glide.with(view.getContext()).load(url).placeholder(R.drawable.default_profile).into(view);
Pour une raison quelconque, je suis toujours coincé avec le caractère fictif affiché et jamais l'image réelle!
Je me suis assuré qu'une URL valide et fonctionnelle est passée. Et, si j'utilise le même code sans espace réservé, cela fonctionne bien
Glide.with(view.getContext()).load(url).into(view);
Des idées pourquoi?
essayez d’ajouter .dontAnimate()
Cela est dû à TransitionDrawable également, et il semble que si, après chaque défilement, il n’ya pas d’animation car elle est mise en cache. le bon code est
Glide.with(view.getContext()).load(url).placeholder(R.drawable.default_profile).dontAnimate().into(view);
J'espère être utile pour vous
Vérifiez si vous avez ajouté une autorisation Internet dans le manifeste:
<uses-permission Android:name="Android.permission.INTERNET"/>
Glide ne déclenche pas d'exception s'il n'y a pas de connectivité Internet.
Si quelqu'un rencontre cela à l'avenir, vous devrez peut-être ajouter
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
Incertain de la raison exacte de ce changement, néanmoins mon code ne fonctionnait pas sans cette permission, et le fait maintenant.
Utiliser ProgressBar comme gif de chargement
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);
Ne pas utiliser la transition ou l'animation pour Glide.Il va résoudre votre problème
Code:
Glide.with(context)
.load(horizontalHappyHourList.get(position).getImage())
// .transition(DrawableTransitionOptions.withCrossFade(400)) //Optional
.apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.RESOURCE)
.error(R.drawable.no_image))
.into(holder.imageView);
Ci-dessous, une solution étrange qui a fonctionné pour moi.
Ce qui suit échoue toujours pour moi (12 essais) - Je ne vois jamais la vraie image:
Glide.with(context)
.load(url)
.asBitmap()
.into(new SimpleTarget<Bitmap>(iconWidth, iconHeight) { ... }
Ce qui suit me réussit toujours (12 essais) - Je vois toujours la vraie image:
Glide.with(context)
.load(url)
.asBitmap()
.listener(new RequestListener() {
public boolean onException(Exception e,Object o,Target t,boolean b)
{return false;}
public boolean onResourceReady(Object o,Object p,Target t,boolean b,boolean c)
{return false;}})
.into(new SimpleTarget<Bitmap>(iconWidth, iconHeight) { ... }
Comme vous pouvez le constater, la seule différence est que j'ai ajouté un auditeur. Cela n'a aucun sens, mais ces essais ont été faits avec beaucoup de soin, alors je vais avec.
Aucune des solutions ci-dessus n'a fonctionné pour moi. La question peut être à la espace réservé que vous utilisez. Si la vue que vous utilisez pour charger l'image comporte un espace réservé, cela pose certains problèmes. Supprimer cet espace réservé pour une raison quelconque semble résoudre le problème.
Ainsi, si la vue (Image) que vous essayez de gonfler a un espace réservé, tel que Android: src = "@ mipmap/placeholder", supprimez-le.
<ImageView
Android:id="@+id/imgGallery"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:adjustViewBounds="true"
Android:scaleType="centerCrop"
Android:src="@mipmap/rugova1" />
comme ça
<ImageView
Android:id="@+id/imgGallery"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:adjustViewBounds="true"
Android:scaleType="centerCrop"
/>
Cela a fonctionné pour moi.
Cela semble étrange, mais la seule chose que je puisse deviner, c'est que votre URL est valide, comme vous l'avez déjà dit. Votre télécommande est en train d'être téléchargée même si elle est appliquée à votre vue d'image, mais votre espace réservé la cache en quelque sorte. Glide a quelques bugs liés à des espaces réservés.
Ma suggestion serait d'essayer ci-dessous:
Glide.with(view.getContext()).load(url).
placeholder(R.drawable.default_profile).fitCenter().into(view);
Donc, le truc est que l’espace réservé est défini via setImageDrawable()
de sorte que le ImageView
l’affiche normalement, mais vous dites à Glide d’utiliser explicitement le fitCenter
qui conviendra à l’image chargée. joliment dans les dimensions de la ImageView
via une transformation, puis définissez-la via setImageDrawable()
. Puisque l'image ajustée est parfaitement ajustée, le centre dessine simplement l'image couvrant toute la zone de la vue.
Essaie.