Я хочу использовать библиотеку Glide Android, чтобы загрузить изображение и показать его ImageView
.
В предыдущей версии мы использовали:
Glide.with(mContext).load(imgUrl)
.thumbnail(0.5f)
.placeholder(R.drawable.PLACEHOLDER_IMAGE_NAME)
.error(R.drawable.ERROR_IMAGE_NAME)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView);
Но я видел документацию по Glide:
он говорит использовать
GlideApp.with()
вместоGlide.with()
Меня беспокоит отсутствие заполнителя, ошибка, GlideApp и другие параметры.
Я использую
compile 'com.github.bumptech.glide:glide:4.0.0'
Где я делаю не так? Со ссылкой на здесь .
Как GlideApp.with()
был использован?
API создается в том же пакете, что AppGlideModule
и API, и имеет имя GlideApp
по умолчанию. Приложения могут использовать API, начиная все нагрузки с GlideApp.with()
вместо Glide.with()
:
GlideApp.with(fragment)
.load(myUrl)
.placeholder(placeholder)
.fitCenter()
.into(imageView);
android
android-layout
android-glide
Ритеш Бхавсар
источник
источник
Ответы:
Попробуйте использовать RequestOptions :
RequestOptions requestOptions = new RequestOptions(); requestOptions.placeholder(R.drawable.ic_placeholder); requestOptions.error(R.drawable.ic_error); Glide.with(context) .setDefaultRequestOptions(requestOptions) .load(url).into(holder.imageView);
РЕДАКТИРОВАТЬ
Если
.setDefaultRequestOptions(requestOptions)
не работает, используйте.apply(requestOptions)
:Glide.with(MainActivity.this) .load(url) .apply(requestOptions) .into(imageview); // or this Glide.with(MainActivity.this) .load(url) .apply(new RequestOptions().placeholder(R.drawable.booked_circle).error(R.drawable.booked_circle)) .into(imageview); // or this Glide.with(MainActivity.this) .load(url) .apply(RequestOptions.placeholderOf(R.drawable.booked_circle).error(R.drawable.)) .into(imageview);
РЕДАКТИРОВАТЬ 2 бонус
Вот еще несколько изменений в Glide-4
requestOptions.circleCropTransform();
Cross fades()
GlideDrawableImageViewTarget
в Glide-4GifDrawable
качестве целевого параметраисточник
RequestOptions requestOptions = new RequestOptions().placeholder(R.drawable.ic_placeholder).requestOptions.error(R.drawable.ic_error);
Если вы используете зависимости пакетов Glide,
compile 'com.github.bumptech.glide:glide:3.7.0'
тогда используйте следующий код:GlideApp .with(your context) .load(url) .centerCrop() .placeholder(R.drawable.loading_image) .error(R.drawable.error_image) .into(myImageView);
Последняя обновленная версия
compile com.github.bumptech.glide:glide:4.1.1
должна использовать следующий код:RequestOptions options = new RequestOptions() .centerCrop() .placeholder(R.drawable.default_avatar) .error(R.drawable.default_avatar) .diskCacheStrategy(DiskCacheStrategy.ALL) .priority(Priority.HIGH) .dontAnimate() .dontTransform(); Glide.with(this) .load(url) .apply(options) .into(imageView);
Ознакомьтесь с последней версией Glide, исправлениями ошибок и функциями .
источник
Если вы хотите использовать GlideApp, вам нужно добавить в
dependencies
обработчик аннотаций, как на скриншоте:Затем включите реализацию AppGlideModule в свое приложение:
@GlideModule public final class MyAppGlideModule extends AppGlideModule {}
Не забываем про
@GlideModule
аннотацию. Затем вам нужно построить проект. ИGlideApp
будет автоматически сгенерирован.источник
Зависимости:
compile 'com.github.bumptech.glide:glide:4.1.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'
Добавьте соответствующим образом аннотированную реализацию AppGlideModule:
import com.bumptech.glide.annotation.GlideModule; import com.bumptech.glide.module.AppGlideModule; @GlideModule public final class MyAppGlideModule extends AppGlideModule{}
Кроме того, если вы использовали опцию jack, чтобы избежать следующих похожих ошибок, вам необходимо использовать предварительную версию Android Studio 3.0.0.
источник
Нам также не нужно использовать RequestOptions.
Созданный API добавляет класс GlideApp, который обеспечивает доступ к подклассам RequestBuilder и RequestOptions. Подкласс RequestOptions содержит все методы в RequestOptions и любые методы, определенные в GlideExtensions. Подкласс RequestBuilder обеспечивает доступ ко всем методам в сгенерированном подклассе RequestOptions без использования apply:
Использование Glide : -
Запрос без сгенерированного API может выглядеть так:
Glide.with(fragment) .load(url) .apply(centerCropTransform() .placeholder(R.drawable.placeholder) .error(R.drawable.error) .priority(Priority.HIGH)) .into(imageView);
Использование GlideApp : -
С помощью сгенерированного API
RequestOptions
вызовы могут быть встроены:GlideApp.with(fragment) .load(url) .centerCrop() .placeholder(R.drawable.placeholder) .error(R.drawable.error) .priority(Priority.HIGH) .into(imageView);
Вы по-прежнему можете использовать сгенерированный подкласс RequestOptions для применения одного и того же набора параметров к нескольким загрузкам, но сгенерированный подкласс RequestBuilder может быть более удобным в большинстве случаев.
источник
За работой
Glide.with(context!!) .load(user.profileImage) .apply (RequestOptions.placeholderOf(R.drawable.dummy_user)) .into(edit_profile_image)
источник
Если вы хотите использовать общий заполнитель повсюду в своем приложении, вы можете сделать это следующим образом:
Поскольку мы создаем GlideModule из Glide v4 , вы можете скопировать / вставить этот класс в свой проект, чтобы вы могли использовать класс GlideApp (для дополнительных шагов - следуйте этому) :
@GlideModule public class SampleGlideModule extends AppGlideModule { @Override public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) { super.applyOptions(context, builder); builder.setDefaultRequestOptions(new RequestOptions().placeholder(R.drawable.logo).error(R.drawable.logo)); } @Override public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { super.registerComponents(context, glide, registry); } }
Здесь вы можете указать все параметры запроса, чтобы установить их по умолчанию .
Создавая этот класс вам не нужно использовать
.placeholder
сGlideApp
, он будет применяться автоматически.источник
RequestOptions options = new RequestOptions() .placeholder(R.drawable.null_image_profile) .error(R.drawable.null_image_profile); //.centerCrop() //.diskCacheStrategy(DiskCacheStrategy.ALL) //.priority(Priority.HIGH); Glide.with(context).load(imageUrl) .apply(options) .into(profileImage);
источник