В Android, что самый простой подход к следующему:Загрузка удаленных изображений
- Загрузите изображение с удаленного сервера.
- Показать его в ImageView.
В Android, что самый простой подход к следующему:Загрузка удаленных изображений
Вот метод, который я использовал в приложении, и я знаю, что это работает:
try {
URL thumb_u = new URL("http://www.example.com/image.jpg");
Drawable thumb_d = Drawable.createFromStream(thumb_u.openStream(), "src");
myImageView.setImageDrawable(thumb_d);
}
catch (Exception e) {
// handle it
}
Я понятия не имею, что второй параметр Drawable.createFromStream
есть, но проходя "src"
, кажется, работает. Если кто-то знает, прошу пролить свет, так как документы на самом деле ничего не говорят об этом.
Самый простой способ до сих пор построить простой Ретривер изображения:
public Bitmap getRemoteImage(final URL aURL) {
try {
final URLConnection conn = aURL.openConnection();
conn.connect();
final BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
final Bitmap bm = BitmapFactory.decodeStream(bis);
bis.close();
return bm;
} catch (IOException e) {}
return null;
}
Затем вы просто должны предоставить URL в метод, и он будет возвращает Bitmap
. Затем вам нужно будет использовать метод setImageBitmap
от ImageView
, чтобы показать изображение.
вы знаете, как это сделать в связи с HTTPS? – Woppi
Будьте осторожны с обоими ответами здесь - они оба имеют шанс на OutOfMemoryException
. Проверьте свое приложение, пытаясь загрузить большое изображение, например обои для рабочего стола. Чтобы было ясно, что обижая линии:
final Bitmap bm = BitmapFactory.decodeStream(bis);
и
Drawable thumb_d = Drawable.createFromStream(thumb_u.openStream(), "src");
ответ Феликса будет поймать его в заявлении поймать {}, и вы могли бы сделать что-то о нем.
Вот как работать вокруг OutOfMemoryException
ошибки:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap bmp = null;
try {
bmp = BitmapFactory.decodeStream(is, null, options);
} catch (OutOfMemoryError ome) {
// TODO - return default image or put this in a loop,
// and continue increasing the inSampleSize until we don't
// run out of memory
}
А вот мои комментарии по этому поводу в своем коде
/**
* Showing a full-resolution preview is a fast-track to an
* OutOfMemoryException. Therefore, we downsample the preview image. Android
* docs recommend using a power of 2 to downsample
*
* @see <a
* href="https://stackoverflow.com/questions/477572/android-strange-out-of-memory-issue/823966#823966">StackOverflow
* post discussing OutOfMemoryException</a>
* @see <a
* href="http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSize">Android
* docs explaining BitmapFactory.Options#inSampleSize</a>
*
*/
Вы также можете попробовать эту библиотеку: https://github.com/codingfingers/fastimage
Когда мы были несколько проектов с той же схемой, и Lib придумал;) так почему бы не поделиться с другими ...
Это намного лучше ... спасибо за подсказку! – Cristian
Вы протестировали это? Кажется, здесь не работает. –
Нет, это не работает. – alexanderblom