Отображение изображения от URL-калибровочных и проблем ориентации экрана
-
25-09-2019 - |
Вопрос
Я пытаюсь отобразить изображение с URL, который может быть больше, чем размер экрана. У меня такое работает, но я хотел бы, чтобы он был пособен, чтобы соответствовать экрану, и у меня также есть проблемы, когда ориентация экрана изменяется. Изображение крошечно, и я бы тоже хотел масштабировать его ширину на экран. (В обоих случаях я хотел бы, чтобы изображение заполнить ширину экрана с помощью прокрутки (при необходимости для высоты).
Вот мой ImageView:
<ImageView android:id="@+id/ImageView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:adjustViewBounds="true">
</ImageView>
Вот код Java, который загружает изображение: (какой-то код обработки ошибок удален для простоты)
Object content = null;
try{
URL url = new URL("http://farm1.static.flickr.com/150/399390737_7a3d508730_b.jpg");
content = url.getContent();
}
catch(Exception ex)
{
ex.printStackTrace();
}
InputStream is = (InputStream)content;
Drawable image = Drawable.createFromStream(is, "src");
Image01.setImageDrawable(image);
Я пробовал разные настройки для Android: Scaletype. Извините, если этот вопрос спросил раньше. Я прошел несколько учебных пособий по теме, но они не работают для меня. Не уверен, что имеет что-то связанное с тем, как загружено изображение. (из сети вместо местного ресурса)
Еще одна проблема заключается в том, что иногда изображение даже не загружается. Нет ошибок времени выполнения, я просто ничего не получаю в ImageView.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация или разъяснение.
Решение
Вопрос о том, что «иногда изображение даже не загружается», связано с контекстом, поэтому я использовал эту функцию для решения этой проблемы
public Object fetch(String address) throws MalformedURLException,
IOException {
URL url = new URL(address);
Object content = url.getContent();
return content;
}
private Drawable ImageOperations(Context ctx, String url) {
try {
InputStream is = (InputStream) this.fetch(url);
Drawable d = Drawable.createFromStream(is, "src");
return d;
} catch (MalformedURLException e) {
return null;
} catch (IOException e) {
return null;
}
}
так что заполнить ширину экрана с вашим изображением, у вас должен быть код
try{
String url = "http://farm1.static.flickr.com/150/399390737_7a3d508730_b.jpg";
Drawable image =ImageOperations(this,url);
Image01.setImageDrawable(image);
}
catch(Exception ex)
{
ex.printStackTrace();
}
Image01.setMinimumWidth(width);
Image01.setMinimumHeight(height);
Image01.setMaxWidth(width);
Image01.setMaxHeight(height);
Обновление :: Если вы загрузите изображение большого размера, очевидно, вам придется ждать больше времени, и загрузки проблем могут быть вызваны неизвестностью.
Да, вы правы, вы сохраните свое изображение локально, локальный доступ будет быстрее, чем загрузка.
Чтобы избежать проблем с изменением вращения Установите настройки конфигурации = «KeybobloboblingHidden | Ориентация».
<activity android:name=".myActivity"
...
android:configChanges="keyboardHidden|orientation" >
...
/>