Skip to content

Разбираемся с Glide

Roman edited this page Sep 16, 2018 · 10 revisions

Дока: https://bumptech.github.io/glide/ По сути это вольный сжатый перевод официальной документации. Писал для себя, когда просто решил полностью разобраться с Glide.

Выжимка из раздела Getting Started

Загрузка и остановка:

Glide.with(fragment).load(myUrl).into(imageView);

Для отмены загрузки:

Glide.with(fragment).clear(imageView);

Но этого делать не обязательно, если в Glide.with() был передан правильный контекст. Glide следит за жизненным циклом и отменяет все загрузки когда fragment или activity уничтожаются.

API и Generated API

Все запросы к библиотеке идут через вызовы статического класс Glide.. Тут используется кодогенерация. можно расширять этот статический класс своими методами, подробнее в доке

Важно то что нужно создать свой GlideModule

@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}

и потом вместо Glide.with() использовать GlideApp.with()

Привязка загрузки идёт к Target, это то что в into(), например target тут это holder.imageView: Glide.with(fragment).load(url).into(holder.imageView);

Если мы переназначаем загрузку нового url на этот таргет, то старая загрузка автоматически отменяется. Единственно когда надо в ручную делать clear(target), это если не нужно на пере используемом таргете (обычно в RecyclerView) заменить картинку на свою или явно остановить загрузку.

Ещё есть Non-View Targets - это по сути способ загрузить картинку при помощи Glide и сделать с ней чтото не помещая её в ImageView. Как вариант это может применяться когда нам надо загрузить кучу картинок в кэш предварительно.

Заменители Placeholders

Есть три типа:

  • placeholder
  • error
  • fallback

Placeholder

Логика следующая: placeholder показываются пока идёт процесс выполнения запроса. Если запрос выполнился успешно, то вместо placeholder покажется загружается картинка. Если картинка грузится из памяти, то placeholder не отображается. При ошибке загрузки, если error placeholder не задан то placeholder продолжает отображаться навсегда. Также если url == null и не задан не error placeholder, не fallback placeholder, то основной placeholder будет отображаться дальше.

Примеры:

GlideApp.with(fragment)
  .load(url)
  .placeholder(R.drawable.placeholder)
  .into(view);

GlideApp.with(fragment)
  .load(url)
  .placeholder(new ColorDrawable(Color.BLACK))
  .into(view);

Error

error placeholder отображается если запрос не удался (какая-то ошибка). А также если url == null и fallback placeholder не задан, то также отобразится error placeholder

Fallback

fallback placeholder отображается когда url == null. Обычно это нужно, чтобы показать пользователю отсутствие картинки в принципе. Например для объявления нет главной картинки и это не ошибка, поэтому показываем fallback placeholder.

Clone this wiki locally