Я бы выбрал рисование, по этой причине, что происходит, когда пользователь запускает приложение без wifi / 3g / etc.или чрезвычайно медленное соединение.Вы говорите, что вашему приложению нужно соединение, но это не обязательно означает, что пользователь включит его, когда запустит приложение.
Кроме того, с помощью drawable намного проще, просто поместите его в папку drawable, затемукажите его как источник для вашего ImageView (если вы используете интерактивный просмотр изображений)
<ImageView android:layout_height="wrap_content" android:id="@+id/imageView1"
android:layout_width="wrap_content" android:src="@drawable/your_image">
</ImageView>
или в качестве фона, если вы используете кнопку в XML-файле.
<Button android:text="" android:id="@+id/button1"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/your_image">
</Button
Вы можете использовать селектор для переключения между 2 изображениями (в нажатом и не нажатом состоянии)
и вместо этого указать XML-файл селектора в качестве фона / источника
т.е. android:background="@drawable/back_button_selector"
Загрузка изображения должна выполняться в фоновом потоке (например, AsycnTask), иначе пользовательский интерфейс не будет отвечать во время загрузки изображения.
Но если вы решите загрузитьизображение по какой-то причине (т.е. вы хотите, чтобы изображение изменилось, не выпуская обновление и просто меняя его на сервере), вот AsyncTask для загрузки изображения (вы можетеиспользуйте его как внутренний класс)
public class GetImage extends AsyncTask<ImageView, Void, ImageView> {
String url = null;
Bitmap thumbnail = null;
public GetImage(String url){
this.url = url;
}
@Override
protected void onPreExecute() {
}
@Override
protected ImageView doInBackground(ImageView... params) {
try {
thumbnail = BitmapFactory.decodeStream((InputStream) new URL(url).getContent());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return params[0];
}
@Override
public void onPostExecute(ImageView result) {
result.setImageBitmap(thumbnail);
}
}