-
Notifications
You must be signed in to change notification settings - Fork 24
Разбираемся с Glide
Дока: 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 уничтожаются.
Все запросы к библиотеке идут через вызовы статического класс 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
не отображается. При ошибке загрузки, если 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 placeholder
отображается если запрос не удался (какая-то ошибка). А также если url == null
и fallback placeholder
не задан, то также отобразится error placeholder
fallback placeholder
отображается когда url == null
. Обычно это нужно, чтобы показать пользователю отсутствие картинки в принципе. Например для объявления нет главной картинки и это не ошибка, поэтому показываем fallback placeholder
.