Это круто. И должно быть намного выше в списке. Asynctask позволяет загружать это, не замораживая пользовательский интерфейс!
Кайл Клегг
3
AsyncTasks использует последовательного исполнителя, то есть каждое изображение будет загружаться по одному и не выполнять параллельную загрузку потоков.
Бланделл
2
Ссылка на источник больше не работает ...
hecvd
10
Входной поток не закрыт в вашем примере. Лучше всего делать в блоке finally вашего try / catch.
Рисадинья,
2
Этот метод все еще актуален? Я немного запутался в методе OnClick () и его назначении
tccpg288
170
1. Picasso позволяет без проблем загружать изображения в ваше приложение - часто в одну строку кода!
3. fresco - это мощная система отображения изображений в приложениях Android. Fresco заботится о загрузке и отображении изображений, поэтому вам не нужно этого делать.
Таким образом, если URL-адрес localhost, это означает, что образ находится в базе данных локального сервера развивающейся системы, такой как xampp, но я все еще не могу получить изображение из url =.
блэкджек,
2
@blackjack - локальным хостом из приложения будет сам смартфон. Чтобы получить доступ к вашей развивающейся системе, смартфон и ваша развивающаяся система должны быть в одной сети, и вам придется использовать IP-адрес вашей развивающейся системы в этой сети.
Чудесно
1
Можно ли использовать Picasso для загрузки изображения на кнопку?
Махди
1
@chiragkyada Я пытаюсь с этим кодом Picasso.with (context) .load (url) .into (button_view); но это показывает ошибку для: into (button_view)
ты прав. но только эти 3 строки помогают решить проблему. URL newurl = новый URL (photo_url_str); mIcon_val = BitmapFactory.decodeStream (newurl.openConnection () .getInputStream ()); profile_photo.setImageBitmap (mIcon_val); спасибо за твой ответ.
Правин
2
Для URL - импорт java.net.URL; private static final int IO_BUFFER_SIZE = 4 * 1024; какой был последний?
UrlImageViewHelper заполнит ImageView изображением, найденным по URL.
Пример будет выполнять поиск картинок Google и загружать / показывать результаты асинхронно.
UrlImageViewHelper автоматически загружает, сохраняет и кэширует все URL-адреса изображений BitmapDrawables. Дубликаты URL не будут загружены в память дважды. Память растрового изображения управляется с помощью хэш-таблицы со слабой ссылкой, поэтому, как только изображение больше не используется вами, оно будет автоматически собирать мусор.
Это должно быть сделано с помощью AsyncTask, как описано выше
B-GangsteR
63
Принятый выше ответ отлично подходит, если вы загружаете изображение на основе нажатия кнопки, однако, если вы делаете это в новом действии, оно останавливает интерфейс на секунду или две. Оглядевшись, я обнаружил, что простая асинхронная задача устраняет эту проблему.
Чтобы использовать asynctask, добавьте этот класс в конце вашей деятельности:
Результатом является быстро загружаемое действие и просмотр изображения, который отображается через долю секунды в зависимости от скорости сети пользователя.
Хороший пример, но я не верю, что это потокобезопасно. Я пытаюсь использовать его в Async onPostExecute, однако onPostExecute может иногда заканчиваться до получения обратного вызова, отображая нулевое изображение.
Джимми
Это управляет его собственной нитью. Так почему бы не заставить ваш ASyncTask перезвонить в пользовательский интерфейс, когда он закончится, с нужным вам URL. Таким образом, у вас нет потоков, порождающих темы.
На мой взгляд, лучшая современная библиотека для такой задачи - это Пикассо на площади. Позволяет загружать изображение в ImageView по URL с однострочником:
Недавно я нашел нить здесь , как я должен сделать нечто подобное для ListView с изображениями, но принцип прост, как вы можете прочитать в первом классе образца , показанного там (по jleedev). Вы получаете входной поток изображения (из Интернета)
Затем вы сохраняете изображение как Drawable и можете передать его в ImageView (через setImageDrawable). Снова из верхнего фрагмента кода взгляните на весь поток.
Здесь много полезной информации ... Недавно я нашел класс SmartImageView, который до сих пор работает очень хорошо. Очень легко включить и использовать.
Это поздний ответ, как предложено выше AsyncTask, и, немного погуглив, я нашел еще один способ решения этой проблемы.
Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
imageView.setImageDrawable(drawable);
Вот полная функция:
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();}
Не забудьте добавить следующие разрешения в ваш AndroidManifest.xmlдоступ к Интернету.
На самом деле это очень хорошо для минимализма! Просто имейте в виду, что это необходимо для дополнительной работы, Threadпотому что поток пользовательского интерфейса не допускает сетевых операций.
creativecreatorormaybenot
6
imageView.setImageBitmap(BitmapFactory.decodeStream(imageUrl.openStream()));//try/catch IOException and MalformedURLException outside
Попробуйте таким образом, надеюсь, это поможет вам решить вашу проблему.
Здесь я объясняю, как использовать внешнюю библиотеку «AndroidQuery» для загрузки изображения с URL / сервера в асинхронном режиме, а также кэшировать загруженное изображение в файл устройства или область кэша.
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.
Ответы:
От разработчика Android :
Убедитесь, что у вас есть следующие разрешения
AndroidManifest.xml
для доступа к Интернету.источник
1. Picasso позволяет без проблем загружать изображения в ваше приложение - часто в одну строку кода!
Используйте Gradle:
Всего одна строка кода!
2. Glide Библиотека загрузки и кэширования изображений для Android, ориентированная на плавную прокрутку.
Используйте Gradle:
// Для простого просмотра:
3. fresco - это мощная система отображения изображений в приложениях Android. Fresco заботится о загрузке и отображении изображений, поэтому вам не нужно этого делать.
Начало работы с фреской
источник
Сначала вам нужно скачать изображение
Затем используйте Imageview.setImageBitmap для установки растрового изображения в ImageView.
источник
Я написал класс, чтобы справиться с этим, так как это кажется постоянной потребностью в моих различных проектах:
https://github.com/koush/UrlImageViewHelper
источник
В любом случае, люди просят мой комментарий опубликовать его как ответ. я публикую
источник
Принятый выше ответ отлично подходит, если вы загружаете изображение на основе нажатия кнопки, однако, если вы делаете это в новом действии, оно останавливает интерфейс на секунду или две. Оглядевшись, я обнаружил, что простая асинхронная задача устраняет эту проблему.
Чтобы использовать asynctask, добавьте этот класс в конце вашей деятельности:
И вызов из вашего метода onCreate (), используя:
Результатом является быстро загружаемое действие и просмотр изображения, который отображается через долю секунды в зависимости от скорости сети пользователя.
источник
Вы также можете использовать это представление LoadingImageView для загрузки изображения из URL:
http://blog.blundellapps.com/imageview-with-loading-spinner/
После того, как вы добавили файл класса по этой ссылке, вы можете создать вид изображения URL:
в XML:
В коде:
И обновите его, используя:
источник
источник
Привет у меня самый простой код попробуйте это
main.xml
попробуй это
источник
На мой взгляд, лучшая современная библиотека для такой задачи - это Пикассо на площади. Позволяет загружать изображение в ImageView по URL с однострочником:
источник
Недавно я нашел нить здесь , как я должен сделать нечто подобное для ListView с изображениями, но принцип прост, как вы можете прочитать в первом классе образца , показанного там (по jleedev). Вы получаете входной поток изображения (из Интернета)
Затем вы сохраняете изображение как Drawable и можете передать его в ImageView (через setImageDrawable). Снова из верхнего фрагмента кода взгляните на весь поток.
источник
Здесь много полезной информации ... Недавно я нашел класс SmartImageView, который до сих пор работает очень хорошо. Очень легко включить и использовать.
http://loopj.com/android-smart-image-view/
https://github.com/loopj/android-smart-image-view
ОБНОВЛЕНИЕ : я закончил тем, что написал сообщение в блоге об этом , поэтому проверьте это для помощи по использованию SmartImageView.
2-е ОБНОВЛЕНИЕ : я теперь всегда использую Пикассо для этого (см. Выше) и очень рекомендую это. :)
источник
Это поздний ответ, как предложено выше
AsyncTask
, и, немного погуглив, я нашел еще один способ решения этой проблемы.Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
imageView.setImageDrawable(drawable);
Вот полная функция:
Не забудьте добавить следующие разрешения в ваш
AndroidManifest.xml
доступ к Интернету.<uses-permission android:name="android.permission.INTERNET" />
Я попробовал это сам, и у меня пока нет проблем.
источник
Thread
потому что поток пользовательского интерфейса не допускает сетевых операций.источник
Это поможет вам ...
Определите imageview и загрузите изображение в него .....
Затем определите этот метод:
источник
источник
Версия с обработкой исключений и асинхронной задачей:
источник
источник
Простой и понятный способ сделать это - использовать библиотеку с открытым исходным кодом Prime .
источник
Этот код протестирован, он полностью работает.
источник
Работа для imageView в любом контейнере, например, просмотр сетки в виде списка, нормальное расположение
источник
Попробуйте таким образом, надеюсь, это поможет вам решить вашу проблему.
Здесь я объясняю, как использовать внешнюю библиотеку «AndroidQuery» для загрузки изображения с URL / сервера в асинхронном режиме, а также кэшировать загруженное изображение в файл устройства или область кэша.
activity_main.xml
MainActivity.java
источник
Android Query может справиться с этим для вас и многое другое (например, кеш и прогресс загрузки).
Посмотрите на здесь .
Я думаю, что это лучший подход.
источник