Donc, si l'URL est localhost, cela signifie que l'image se trouve dans la base de données du serveur local du système en développement comme xampp, toujours incapable de récupérer l'image à partir de l'url =.
blackjack
2
@blackjack - localhost de l'application serait le smartphone lui-même. Pour accéder à votre système de développement, le smartphone et votre système de développement devront être dans le même réseau et vous devrez utiliser l'adresse IP de votre système de développement dans ce réseau.
Ridcully
1
est-il possible d'utiliser picasso pour charger l'image sur le bouton?
mahdi
1
@chiragkyada j'essaye avec ce code Picasso.with (context) .load (url) .into (button_view); mais il affiche une erreur pour: into (button_view)
mahdi
1
Je pense que cela devrait être la réponse acceptée
tu as raison. mais juste ces 3 lignes aident à résoudre le problème. URL newurl = nouvelle URL (photo_url_str); mIcon_val = BitmapFactory.decodeStream (newurl.openConnection () .getInputStream ()); profile_photo.setImageBitmap (mIcon_val); merci pour votre réponse.
Praveen
2
Pour URL - import java.net.URL; int statique final privé IO_BUFFER_SIZE = 4 * 1024; quel était le dernier?
UrlImageViewHelper remplira une ImageView avec une image qui se trouve à une URL.
L'échantillon effectuera une recherche d'images Google et chargera / affichera les résultats de manière asynchrone.
UrlImageViewHelper téléchargera, enregistrera et mettra en cache automatiquement 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.
mm .. cela ne peut pas être fait depuis le thread d'interface utilisateur.
Guy
2
Pour les personnes ayant des problèmes avec "Exemption d'URL mal formée", entourez les lignes ci-dessus dans un essai / capture. stackoverflow.com/a/24418607/2093088
Riot Goes Woof
1
Cela devrait être fait en utilisant AsyncTask comme décrit ci-dessus
B-GangsteR
63
La réponse acceptée ci-dessus est excellente si vous chargez l'image sur la base d'un clic sur un bouton, mais si vous le faites dans une nouvelle activité, elle fige l'interface utilisateur pendant une seconde ou deux. En regardant autour de moi, j'ai constaté qu'une simple asynctask a éliminé ce problème.
Pour utiliser un asynctask, ajoutez cette classe à la fin de votre activité:
Le résultat est une activité rapidement chargée et une vue d'image qui apparaît une fraction de seconde plus tard en fonction de la vitesse du réseau de l'utilisateur.
Bel échantillon, mais je ne pense pas que ce soit sûr pour les threads. J'essaie de l'utiliser dans un Async onPostExecute, mais onPostExecute peut parfois se terminer avant la réception du rappel, ce qui rend une image nulle.
Jimmy
Cela gère son propre thread. Alors pourquoi ne pas demander à votre ASyncTask de revenir à l'interface utilisateur lorsqu'elle est terminée, avec l'URL que vous souhaitez. De cette façon, vous n'avez pas de threads générant des threads.
À mon avis, la meilleure bibliothèque moderne pour une telle tâche est Picasso by Square. Il permet de charger une image dans une ImageView par URL avec un liner:
J'ai récemment trouvé un fil ici , car je dois faire une chose similaire pour une liste avec des images, mais le principe est simple, comme vous pouvez le lire dans le premier exemple de classe montré ici (par jleedev). Vous obtenez le flux d'entrée de l'image (à partir du Web)
Ensuite, vous stockez l'image en tant que dessinable et vous pouvez la transmettre à ImageView (via setImageDrawable). Encore une fois à partir de l'extrait de code supérieur, jetez un œil à l'ensemble du thread.
Beaucoup de bonnes informations ici ... J'ai récemment trouvé une classe appelée SmartImageView qui semble fonctionner très bien jusqu'à présent. Très facile à intégrer et à utiliser.
Ceci est une réponse tardive, comme suggéré ci AsyncTask- dessus et après avoir googlé un peu, j'ai trouvé un autre moyen de résoudre ce problème.
Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
imageView.setImageDrawable(drawable);
Voici la fonction complète:
publicvoid loadMapPreview (){//start a background thread for networkingnewThread(newRunnable(){publicvoid run(){try{//download the drawablefinalDrawable drawable =Drawable.createFromStream((InputStream)new URL("url").getContent(),"src");//edit the view in the UI thread
imageView.post(newRunnable(){publicvoid run(){
imageView.setImageDrawable(drawable);}});}catch(IOException e){
e.printStackTrace();}}}).start();}
N'oubliez pas d'ajouter les autorisations suivantes dans votre AndroidManifest.xmlpour accéder à Internet.
C'est en fait très bien pour le minimalisme! Gardez juste à l'esprit qu'il est nécessaire de s'exécuter en supplément Threadcar le thread d'interface utilisateur ne permet pas les opérations réseau.
creativecreatorormaybenot
6
imageView.setImageBitmap(BitmapFactory.decodeStream(imageUrl.openStream()));//try/catch IOException and MalformedURLException outside
Essayez de cette façon, j'espère que cela vous aidera à résoudre votre problème.
Ici, j'explique comment utiliser la bibliothèque externe "AndroidQuery" pour charger l'image de l'url / serveur de manière asyncTask avec également une image chargée dans le fichier de périphérique ou la zone de cache.
publicclassMainActivityextendsActivity{privateAQuery aQuery;@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
aQuery =newAQuery(this);
aQuery.id(R.id.imageFromUrl).progress(R.id.pbrLoadImage).image("http://itechthereforeiam.com/wp-content/uploads/2013/11/android-gone-packing.jpg",true,true);}}Note:Here I just implemented common method to load image from url/server but you can use various types of method which can be provided by"AndroidQuery"to load your image easily.
Réponses:
Du développeur Android :
Assurez-vous que vous disposez des autorisations suivantes
AndroidManifest.xml
pour accéder à Internet.la source
1. Picasso permet un chargement d'image sans tracas dans votre application, souvent sur une seule ligne de code!
Utilisez Gradle:
Une seule ligne de code!
2. Glide Une bibliothèque de chargement et de mise en cache d'images pour Android axée sur un défilement fluide
Utilisez Gradle:
// Pour une vue simple:
3. fresco est un système puissant pour afficher des images dans des applications Android.
Premiers pas avec Fresco
la source
Vous devrez d'abord télécharger l'image
Utilisez ensuite Imageview.setImageBitmap pour définir le bitmap dans ImageView
la source
J'ai écrit une classe pour gérer cela, car cela semble être un besoin récurrent dans mes différents projets:
https://github.com/koush/UrlImageViewHelper
la source
Quoi qu'il en soit, les gens demandent mon commentaire pour le poster comme réponse. je poste.
la source
La réponse acceptée ci-dessus est excellente si vous chargez l'image sur la base d'un clic sur un bouton, mais si vous le faites dans une nouvelle activité, elle fige l'interface utilisateur pendant une seconde ou deux. En regardant autour de moi, j'ai constaté qu'une simple asynctask a éliminé ce problème.
Pour utiliser un asynctask, ajoutez cette classe à la fin de votre activité:
Et appelez à partir de votre méthode onCreate () en utilisant:
Le résultat est une activité rapidement chargée et une vue d'image qui apparaît une fraction de seconde plus tard en fonction de la vitesse du réseau de l'utilisateur.
la source
Vous pouvez également utiliser cette vue LoadingImageView pour charger une image à partir d'une URL:
http://blog.blundellapps.com/imageview-with-loading-spinner/
Une fois que vous avez ajouté le fichier de classe à partir de ce lien, vous pouvez instancier une vue d'image d'URL:
en xml:
Dans du code:
Et mettez-le à jour en utilisant:
la source
la source
Salut, j'ai le code le plus simple, essayez ceci
main.xml
essaye ça
la source
À mon avis, la meilleure bibliothèque moderne pour une telle tâche est Picasso by Square. Il permet de charger une image dans une ImageView par URL avec un liner:
la source
J'ai récemment trouvé un fil ici , car je dois faire une chose similaire pour une liste avec des images, mais le principe est simple, comme vous pouvez le lire dans le premier exemple de classe montré ici (par jleedev). Vous obtenez le flux d'entrée de l'image (à partir du Web)
Ensuite, vous stockez l'image en tant que dessinable et vous pouvez la transmettre à ImageView (via setImageDrawable). Encore une fois à partir de l'extrait de code supérieur, jetez un œil à l'ensemble du thread.
la source
Beaucoup de bonnes informations ici ... J'ai récemment trouvé une classe appelée SmartImageView qui semble fonctionner très bien jusqu'à présent. Très facile à intégrer et à utiliser.
http://loopj.com/android-smart-image-view/
https://github.com/loopj/android-smart-image-view
MISE À JOUR : J'ai fini par écrire un article de blog à ce sujet , alors consultez-le pour obtenir de l'aide sur l'utilisation de SmartImageView.
2ÈME MISE À JOUR : J'utilise maintenant toujours Picasso pour cela (voir ci-dessus) et je le recommande fortement. :)
la source
Ceci est une réponse tardive, comme suggéré ci
AsyncTask
- dessus et après avoir googlé un peu, j'ai trouvé un autre moyen de résoudre ce problème.Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
imageView.setImageDrawable(drawable);
Voici la fonction complète:
N'oubliez pas d'ajouter les autorisations suivantes dans votre
AndroidManifest.xml
pour accéder à Internet.<uses-permission android:name="android.permission.INTERNET" />
J'ai essayé moi-même et je n'ai pas encore rencontré de problème.
la source
Thread
car le thread d'interface utilisateur ne permet pas les opérations réseau.la source
Cela vous aidera ...
Définissez l'imageview et chargez l'image dedans .....
Définissez ensuite cette méthode:
la source
la source
Version avec gestion des exceptions et tâche asynchrone:
la source
la source
Un moyen simple et propre de le faire est d'utiliser la bibliothèque open source Prime .
la source
Ce code est testé, il fonctionne complètement.
la source
Travailler pour imageView dans n'importe quel conteneur, comme la vue de la liste de la grille, la mise en page normale
la source
Essayez de cette façon, j'espère que cela vous aidera à résoudre votre problème.
Ici, j'explique comment utiliser la bibliothèque externe "AndroidQuery" pour charger l'image de l'url / serveur de manière asyncTask avec également une image chargée dans le fichier de périphérique ou la zone de cache.
activity_main.xml
MainActivity.java
la source
Android Query peut gérer cela pour vous et bien plus encore (comme la mise en cache et la progression du chargement).
Jetez un oeil ici .
Je pense que c'est la meilleure approche.
la source