Intereting Posts
Ошибка часового пояса SimpleDateFormat на Android Ошибка при добавлении динамических данных Наложение изображения на угол обзора Единственное намерение позволить пользователю сделать снимок ИЛИ выбрать изображение из галереи на Android Не удается получить библиотечный баннер для работы с Android и Proguard Делегировать преобразование текста в «плагины» приложений для Android, не известных заранее Событие Mono Droid onClick не найдено Android ListView: не удается центрировать элементы при запуске, из-за исключения Null Pointer Как передать параметр в код Java в конфигурации запуска / отладки из Android Studio Проблема с записью моих данных с помощью аварийных сообщений Ошибка прокрутки Android> отображается только прикосновением Обновления местоположения не работают в помещении, как утверждают API-интерфейсы поставщика Fusion Location Смутно, как использовать Mockito для тестирования Android Список и названия жестов сенсорного экрана Отправка пользовательских данных с помощью ACRA без отправки самого исключения

Отображение изображения приложения Android из URL

Я ищу очень элементарную функцию. Я пытаюсь создать приложение, и все, что я хочу, это загрузить изображение с URL-адреса. Я нашел несколько вопросов и веб-сайтов, но все они, кажется, старше и устарели, но то, что я думаю, что у меня возникают проблемы, связывает код с активностью main.xml для ImageView.

Любые предложения или ссылки, которые у вас есть, я бы очень признателен, спасибо.

Вот как я показываю изображение с URL-адреса в представлении изображения
Вы должны называть этот код из потока, кроме основного потока

ImageView img = (ImageView) findViewById(R.id.imageView1); try { URL url = new URL("Your URL"); //try this url = "http://0.tqn.com/d/webclipart/1/0/5/l/4/floral-icon-5.jpg" HttpGet httpRequest = null; httpRequest = new HttpGet(url.toURI()); HttpClient httpclient = new DefaultHttpClient(); HttpResponse response = (HttpResponse) httpclient .execute(httpRequest); HttpEntity entity = response.getEntity(); BufferedHttpEntity b_entity = new BufferedHttpEntity(entity); InputStream input = b_entity.getContent(); Bitmap bitmap = BitmapFactory.decodeStream(input); img.setImageBitmap(bitmap); } catch (Exception ex) { } 

Будьте осторожны, не забудьте окружить код с помощью try catch (я уже сделал это в этом коде)

Или вы можете использовать webview для загрузки изображения из URL-адреса

 WebView web = (WebView) findViewById(R.id.webView1); web.loadUrl("Your Url"); 

Если вы пытаетесь загрузить изображение из папки с ресурсами, url начнет как этот «файл: ///android_asset/yourimage.jpg»,
Иначе нормальный интернет-url вроде этого " http://0.tqn.com/d/webclipart/1/0/5/l/4/floral-icon-5.jpg "

Надеюсь, это сработает для вас

Существует библиотека с открытым исходным кодом, называемая imageloader. Он широко используется, вы можете использовать его напрямую или сделать код похожим на него.

https://github.com/nostra13/Android-Universal-Image-Loader

Вы можете взять изображение, а на вашей php-стороне конвертировать его в base64, а затем на Android-стороне декодировать его в изображение.

Лучшая практика загрузки изображения должна выполняться в фоновом потоке, чтобы он не прерывал основной поток, а затем обновлял интерфейс пользователя по мере необходимости.

Открытый класс MainActivity расширяет AppCompatActivity {

 FrameLayout frameLayout; ImageView imageView; ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); frameLayout= (FrameLayout) findViewById(R.id.containerlayout); imageView= (ImageView) findViewById(R.id.imageView); progressBar= (ProgressBar) findViewById(R.id.progressBar); String url="http://www.flat-e.com/flate5/wp-content/uploads/cover-960x857.jpg"; MyTask myTask= new MyTask(); myTask.execute(url); } class MyTask extends AsyncTask<String, Void, Bitmap> { @Override protected void onPreExecute() { progressBar.setVisibility(View.VISIBLE); } @Override protected Bitmap doInBackground(String... voids) { Bitmap bitmap=null; try { URL url =new URL(voids[0]); HttpURLConnection connection= (HttpURLConnection) url.openConnection(); InputStream inputStream= connection.getInputStream(); bitmap = BitmapFactory.decodeStream(inputStream); } catch (IOException e) { e.printStackTrace(); } return bitmap; } @Override protected void onPostExecute(Bitmap bitmap) { progressBar.setVisibility(View.GONE); imageView.setImageBitmap(bitmap); } } 

}

Здесь, в этом примере, я создал внутренний класс MyTask, который расширяет AsyncTask, где я выполнил все мои сетевые операции. Обязательно добавьте разрешение Uses в свой файл манифеста.

Надеюсь, это сработает и для вас.