Какая библиотека изображений для Android для загрузки фотографий в Интернете

Я хочу создать приложение, которое загружает URL-адреса изображений с моего сайта (возвращается в JSONArray), а затем отображает изображения в gridview (фотографии также находятся в сети, поэтому их нужно загружать).

Проблема в том, что я запутался, какая библиотека проще в использовании и имеет лучшую производительность?

Android Query или Android Universal Image Loader (UIL)?

Android Universal Image Loader работает как чемпион.

Это очень простой в использовании пример.

Но, в основном, это способ использовать его с GridView :

После ожидаемого imports вам необходимо:

 protected AbsListView list; protected ImageLoader loader = ImageLoader.getInstance(); private String query; final Context context = this; private ItemAdapter adapter; private DisplayImageOptions op; @Override public void onCreate(Bundle savedInstanceState) { op = new DisplayImageOptions.Builder() .displayer(new RoundedBitmapDisplayer(20)) .build(); list = (GridView) findViewById(R.id.gridViewSearch); adapter = new ItemAdapter(images); list.setAdapter(adapter); list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // Do whatever you need to do after clicking an image. } }); } 

И, конечно, вам нужен adapter :

 class ItemAdapter extends BaseAdapter { private String[] imagesA; public ItemAdapter(String [] Images){ this.imagesA = Images; } public void setData(String [] Images){ this.imagesA = Images; } private class ViewHolder { public ImageView image; } @Override public int getCount() { return imagesA.length; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View v = convertView; v = getLayoutInflater().inflate(R.layout.image_in_gridview_layout, parent, false); final ProgressBar spinner = (ProgressBar) v.findViewById(R.id.loading); final ViewHolder holder = new ViewHolder(); holder.image = (ImageView) v.findViewById(R.id.grid_item_image); v.setTag(holder); loader.displayImage(imagesA[position], holder.image, op, new SimpleImageLoadingListener() { @Override public void onLoadingStarted(String imageUri, View view) { spinner.setVisibility(View.VISIBLE); } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { spinner.setVisibility(View.GONE); } @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { spinner.setVisibility(View.GONE); } }); return v; } 

Android Universal Image Loader является самым популярным в настоящее время. Очень настраиваемый, балет .

AQuery ; Как jquery, но для Android? Наверное, это хорошо, если ты в этом разбираешься. Не используйте это; Это дерьмо в нити пользовательского интерфейса или что-то в этом роде. Загрузив кучу изображений на моем Nexus 4 в списке, мне показалось, что я снова вернулся на свой HTC G1. Основное заикание, балет .

Больше:

Пикассо имеет самый красивый API изображений. Я собираюсь украсть их стиль API currying для моего будущего / текущего материала. Пикассо также заметно медленнее. Особенно на 3g против Wi-Fi. Возможно, из-за их пользовательского клиента okhttp , tuto .

UrlImageViewHelper + AndroidAsync является самым быстрым. Однако, игра с этими двумя большими библиотеками действительно подчеркнула, что API-интерфейс изображения довольно устарел.

Волейбол скользкий; Мне действительно нравятся их подключаемые backend-транспорты, и в конечном итоге вы можете отказаться от AndroidAsync. Приоритет запросов и управление отменой – это отличная презентация Google I / O 2013 , тату .

Я рекомендую вам сделать выбор между Volley и Picasso

Вы можете использовать Ion https://github.com/koush/ion или Picasso по квадрату http://square.github.io/picasso/ , оба отличные!

Picasso (By Square) очень полезен и прост в использовании: http://square.github.io/picasso/

Вы должны изучить это.

Для меня: Пикассо – это путь!

Зачем?

  • Очень быстро
  • стабильный
  • Легко использовать
  • В основном одна строка кода

Я использовал Universal ImageLoader 1.9.0 (UIL), до тех пор, пока мне не пришлось использовать ListView с OnScrollListener, где следующие 10 загруженных файлов и прокрутка стали достаточно бегло с UIL, а FAST – прокруткой вперед и назад, для Например, загружено 50 предметов. Чтобы выполнить плавную прокрутку, я пробовал разные настройки и параметры в UIL (не помог, кроме опции задержки), и я попробовал AQuery (быстро, но по прокруткам изображения исчезли и появились снова даже с помощью набора заполнителей ) И UrlImageViewHelper (быстро, но я не мог установить drawable как placeholder в случае «No Network Connection»), поэтому я закончил с Picasso (самый быстрый из тех четырех, которые я тестировал, отсюда и плавная прокрутка) 🙂

Но я должен дать большой комплимент NOSTRA13 (создателю UIL) в любом случае из-за:

  • Чистая и простая в использовании документация
  • Легко использовать
  • Много вариантов
  • стабильный
  • Надежная поддержка

Испытательная среда:
Android HTC Desire X и очень слабая Wifi-Connection.

РЕДАКТИРОВАТЬ:
Я беру его обратно, что другие файлы с изображениями быстрее: UIL теперь для меня тоже! 🙂
У меня всегда была прокрутка с UIL при первой загрузке изображений, и я знал, что это имеет какое-то отношение к прокрутке, поэтому я искал сеть для получения дополнительной информации, пока не нашел этот красивый пост:
Прокрутка ListView с использованием UniversalImageDownloader негладкая
Поэтому я устанавливаю PauseOnScrollListener и вижу там, проблема решена!
Следовательно: UIL – номер 1!