Vous ne devriez vraiment pas l'utiliser, car cela bloque le thread de l'interface utilisateur. Cette bibliothèque gérera le threading et le téléchargement pour vous: github.com/koush/UrlImageViewHelper
koush
16
Pas si vous exécutez ce bloc sur un thread séparé moins le setImageBitmap
Jonathan
son fonctionnement je l'affiche dans les vignettes et onclick imageview j'ai utilisé dsplaying dailog mais il s'ouvre après 10secs
Prasad
4
@koush - Ce code conviendrait s'il était enveloppé dans un fichier AsyncTask.
Greg Brown
2
Vous devez effectuer toutes les opérations réseau dans un thread séparé.Lorsque le bitmap a été chargé, vous pouvez utiliser ImageView.post () ou Handler.post ()
Volodymyr Shalashenko
311
La réponse acceptée ci-dessus est excellente si vous chargez l'image en cliquant sur un bouton, mais si vous le faites dans une nouvelle activité, elle gèle l'interface utilisateur pendant une seconde ou deux. En regardant autour de moi, j'ai trouvé qu'une simple asynctask éliminait ce problème.
Pour utiliser une asynctask pour ajouter cette classe à la fin de votre activité:
J'aime cette solution, vous devriez simplement nettoyer le code pour onPostExecute, car son corps est sorti.
Sofija
c'est bien. @Sofija qu'est-ce que tu voulais dire par nettoyage? et si vous avez un nombre inconnu d'images?
5er
@ 5er J'avais certains des crochets hors de propos dans la réponse originale. Depuis, je l'ai nettoyé, vous devriez donc pouvoir l'utiliser tel quel.
Kyle Clegg
N'oubliez pas que nous devons également ajouter une autorisation dans le manifeste: <uses-permission android: name = "android.permission.INTERNET" />
mike20132013
1
C'est génial pour l'apprentissage / le piratage (vote positif), mais pour toute production, vous devriez utiliser une bibliothèque Imageloader, il y en a tellement. Mon préféré est Universal Image Loader, Picasso etc.
AmeyaB
31
essayez picasssobien et se termine en une seule déclaration
Picasso, Glide sont aussi mes préférés. La déclaration de Glide est assez similaire à celle de Picasso, avec une amélioration considérable de la taille du cache.
anhtuannd
1
Cela devrait être la nouvelle réponse, bien qu'il soit toujours agréable de savoir comment le faire par vous-même. Excellent article expliquant les deux sens: medium.com/@crossphd/…
UrlImageViewHelper remplira un ImageView avec une image qui se trouve à une URL. UrlImageViewHelper téléchargera, enregistrera et mettra automatiquement en cache toutes les URL d'image des BitmapDrawables. Les URL en double ne seront pas chargées en mémoire deux fois. La mémoire bitmap est gérée à l'aide d'une table de hachage de référence faible, donc dès que l'image n'est plus utilisée par vous, elle sera automatiquement récupérée.
Le code ci-dessous vous montre comment définir ImageView à partir d'une chaîne d'URL, à l'aide de RxAndroid. Tout d'abord, ajoutez la bibliothèque RxAndroid 2.0
1) Utilisation de la bibliothèque Glide C'est le meilleur moyen de charger l'image à partir de l'URL car lorsque vous essayez d'afficher la même URL la deuxième fois, elle s'affichera à partir de catch, alors améliorez les performances de l'application
Réponses:
la source
AsyncTask
.La réponse acceptée ci-dessus est excellente si vous chargez l'image en cliquant sur un bouton, mais si vous le faites dans une nouvelle activité, elle gèle l'interface utilisateur pendant une seconde ou deux. En regardant autour de moi, j'ai trouvé qu'une simple asynctask éliminait ce problème.
Pour utiliser une asynctask pour ajouter cette classe à la fin de votre activité:
Et appelez depuis votre méthode onCreate () en utilisant:
N'oubliez pas d'ajouter l'autorisation ci-dessous dans votre fichier manifeste
Fonctionne très bien pour moi. :)
la source
essayez
picassso
bien et se termine en une seule déclarationtutoriel: https://youtu.be/DxRqxsEPc2s
la source
Essayez ce fichier jar add picasso lib
la source
dans votre activité, prenez imageview et définissez la ressource imageDownload (url, yourImageview);
la source
UrlImageViewHelper remplira un ImageView avec une image qui se trouve à une URL. UrlImageViewHelper téléchargera, enregistrera et mettra automatiquement en cache toutes les URL d'image des BitmapDrawables. Les URL en double ne seront pas chargées en mémoire deux fois. La mémoire bitmap est gérée à l'aide d'une table de hachage de référence faible, donc dès que l'image n'est plus utilisée par vous, elle sera automatiquement récupérée.
UrlImageViewHelper.setUrlDrawable (imageView, "http://example.com/image.png");
https://github.com/koush/UrlImageViewHelper
la source
Sur la base de cette réponse, j'écris mon propre chargeur.
Avec effet de chargement et effet d'apparence:
Ajouter une autorisation
Et exécutez:
la source
Voici un exemple de code pour afficher l'image à partir de l'URL.
la source
Meilleure méthode que j'ai essayée au lieu d'utiliser des bibliothèques
la source
ajouter l'autorisation Internet dans le manifeste
que de créer une méthode comme ci-dessous,
ajoutez maintenant ceci dans votre méthode onCreate,
cela fonctionne pour moi.
la source
Le code ci-dessous vous montre comment définir ImageView à partir d'une chaîne d'URL, à l'aide de RxAndroid. Tout d'abord, ajoutez la bibliothèque RxAndroid 2.0
utilisez maintenant setImageFromUrl pour définir l'image.
la source
Il y a deux manières:
1) Utilisation de la bibliothèque Glide C'est le meilleur moyen de charger l'image à partir de l'URL car lorsque vous essayez d'afficher la même URL la deuxième fois, elle s'affichera à partir de catch, alors améliorez les performances de l'application
dépendance:
implementation 'com.github.bumptech.glide:glide:4.10.0'
2) Utilisation de Stream. Ici, vous voulez créer un bitmap à partir d'une image URL
la source
Voici
la source
ivdpfirst
?Essaye ça:
la source
la source
Pour moi, Fresco est la meilleure parmi les autres bibliothèques.
Configurez simplement Fresco, puis définissez simplement l'imageURI comme ceci:
Consultez cette réponse expliquant certains des avantages de Fresco.
la source