À l'aide de Glisse à la charge bitmap dans ImageView
Comment puis-je utiliser Glide bibliothèque à la charge de Bitmap dans mon ImageView?
Je veux créer un personnalisé image avec du texte et de le charger dans imageview à l'aide de Glisse.
C'est ma méthode de création d'image personnalisée avec le texte
public Bitmap imageWithText(String text) {
TextView tv = new TextView(context);
tv.setText(text);
tv.setTextColor(Color.WHITE);
tv.setBackgroundColor(Color.BLACK);
tv.setTypeface(null, Typeface.BOLD);
tv.setGravity(Gravity.CENTER);
tv.setTextSize(20);
tv.setPadding(0, 25, 0, 0);
Bitmap testB = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(testB);
tv.layout(0, 0, 100, 100);
tv.draw(c);
return testB;
}
Mais quand j'essaye de charger cette image bitmap à l'aide glide j'obtiens une erreur
Glide.with(getContext()).load(imageWithText("Random text")).into(holder.imgPhoto);
OriginalL'auteur user3296088 | 2015-08-06
Vous devez vous connecter pour publier un commentaire.
@rookiedev est droit, il n'y a pas de
load(Bitmap)
dans le glissement, pour une raison: l'acquisition d'unBitmap
prend généralement du temps et parfois de blocage I/O. il est Donc préférable de ne pas appelerimageWithText
sur le thread d'INTERFACE utilisateur. Mise à jour: ceci dit, j'ai proposé cette fonctionnalité un moment de retour, et alors que les hacks sont plus faciles à faire, vous pouvez trouver le "glissement façon" ci-dessous, que je recommande fortement.Glide est conçu pour être flexible et ce problème montre que le trait extrêmement bien. La suite de la mise en œuvre peut paraître long, mais tous les morceaux ont leur raison d'existence. Étant donné le gain de performance, cette quantité de code pour l'adapter à votre générateur en Glisse du monde n'est pas beaucoup. J'ai essayé de le formater pour être bref, l'effondrement des parties sans importances et à l'aide de statique des importations à être plus courts (voir à la fin pour les importations).
Le code comprend également généré par programmation d'INTERFACE utilisateur de sorte que vous pouvez simplement copier-coller tout le code ci-dessous dans
GlideGeneratedImageListFragment.java
et l'exécuter; la seule dépendance externe est de soutenir les lib deRecyclerView
.Voici à quoi il ressemble (le réel, le défilement est beaucoup plus lisse, le GIF est vraiment faible FPS):
Remarquez comment il charge les premiers éléments, puis progressivement en charge le reste. Il faut un peu que la mémoire cache et la piscine se réchauffe, mais vous pouvez utiliser un preloader si vous voulez plus d'affichage. Après c'est du réchauffé ça défile bien. Sur le bouton supprimer de la barre d'action appels
Glide.clearDiskCache()
etGlide.clearMemory()
donc il commence à regenating les éléments de nouveau.Oui, ils sont toujours appelé comme ça, il ne compile pas le contraire... je viens de la liste des signatures, comme
Class.method(args)
de montrer que c'est pas de la magie ce que fait le bouton.clearMemory
doit être appelée sur le thread de l'INTERFACE utilisateur, sinon, vous pouvez obtenir surprises.OriginalL'auteur TWiStErRob
Je ne sais pas la performance, mais vous pouvez essayer ceci:
Tout d'abord de transformer votre image bitmap en tant que byte[] tableau:
Puis utiliser glide de cette façon:
Dans votre cas:
OriginalL'auteur Rapture Engineering
Selon la documentation, je ne pense pas que le load() méthode peut prendre une image Bitmap en tant que paramètre. La source de l'image (c'est à dire, le paramètre) pourrait être une URL, drawable des ressources, et le fichier.
Cependant, si vous souhaitez charger une image Bitmap dans une ImageView, vous n'avez pas besoin d'utiliser le Glisser de la bibliothèque. Suffit d'utiliser la déclaration ci-dessous
Il y a un problème ouvert pour
load(Bitmap)
: #122, mais Bitmap génération peut prendre un certain temps, ce qui bloque le thread d'INTERFACE utilisateur.OriginalL'auteur rookiedev
Vous pouvez essayer,
Le code ci-dessous ajoute une ImageView et un TextView pour FrameLayout :
Le résultat sera comme indiqué ci-dessous :
OriginalL'auteur Doan Bui