Glide: charge drawable mais pas d'échelle
Est-il un moyen d'utiliser le Glisser pour attribuer un espace réservé, mais garder cette image à sa taille originale?
J'ai un ImageView
avec taille variable (en fonction de l'image entrante) que j'ai mis avant d'appeler Glide.with().load().into()
et je veux utiliser un espace réservé pour elle, mais ne veulent pas le PH à être redimensionnées à la taille de la ImageView
, je veux qu'il à garder sa taille d'origine.
Jusqu'à présent, je ne pouvais pas trouver un moyen de le faire.
source d'informationauteur Fernando
Vous devez vous connecter pour publier un commentaire.
Re: Gregs commentaire:
Je lui ai donné un autre coup (avec presque un an d'XP supplémentaire) et est venu avec cette:
similaire à mon autre solution et l'animation suivante wrapper:
Trivial parties de la implémentations sont omis, chaque constructeur de la classe initialise les champs à partir des arguments. Code complet disponible sur GitHub dans TWiStErRob/glide-soutien.
Si vous êtes coincé sur une ancienne version de Glisse (avant 3.8.0), le même effet peut être obtenu par:
Notez comment les deux solutions requièrent le même nombre de classes, mais le post-3.8.0 solution a une meilleure séparation des préoccupations et il peut être mis en cache dans une variable afin de prévenir les allocations.
Il y a un connu Glide question des espaces réservés de la distorsion des images chargées et vice versa. Cependant, je pense que vous n'êtes pas concerné par cela.
Cela ressemble à ce que vous voulez est de montrer l'espace réservé dessinés avec
scaleType="center"
et vous voulez que le chargement de l'image àscaleType="fitCenter"
. Voici comment vous exprimer que dans la finesse. Ajouterandroid:scaleType="center"
dans le XML et utiliser les Glisser la ligne de charge:Le truc, c'est que l'espace réservé est définie par l'intermédiaire
setImageDrawable()
donc l'ImageView va juste afficher comme d'habitude, mais vous vous dites Glisse à l'utilisation de laFitCenter
explicitement qui s'adapte à l'image chargée joliment au sein de l'ImageView disposé de la taille par l'intermédiaire d'une Transformation puis le configurer viasetImageDrawable()
. Depuis la monté de l'image est un ajustement parfait,center
aurez juste attirer l'image couvrant l'ensemble de la zone de la vue.Vous pouvez également utiliser
.centerCrop()
de la même façon.Si quelque chose va mal, vous pouvez essayer
.asBitmap()
et.dontAnimate()
ils aident la plupart du temps d'une manière ou d'une autre.Je faire comme mentionné ci-dessous:
L'idée est de définir le type d'échelle tel que prescrit par le titulaire de place initialement & ajoutez un écouteur pour changer le type d'échelle de nouveau tel que requis par l'image téléchargée après le téléchargement de l'image.
Ma transition drawable (R. drawable.anim_image_placeholder) :
(pas nécessaire si vous utilisez une image statique)