I want to use the Glide Android library to download an image and show in ImageView
.
In the previous version we used:
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);
But I have seen Glide documentation:
it says use
GlideApp.with()
insteadGlide.with()
My concern is a missing placeholder, error, GlideApp, and other options.
I am using
compile 'com.github.bumptech.glide:glide:4.0.0'
Where am I doing wrong? With reference to here.
How has GlideApp.with()
been used?
The API is generated in the same package as the AppGlideModule
and is named GlideApp
by default. Applications can use the API by starting all loads with GlideApp.with()
instead of Glide.with()
:
GlideApp.with(fragment)
.load(myUrl)
.placeholder(placeholder)
.fitCenter()
.into(imageView);
Try using 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);
EDIT
If .setDefaultRequestOptions(requestOptions)
does not work, use .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);
EDIT 2 Bonus
Here are some other changes in Glide-4
requestOptions.circleCropTransform();
Cross fades()
GlideDrawableImageViewTarget
in Glide-4GifDrawable
as target parameterIf you use Glide package dependencies, compile 'com.github.bumptech.glide:glide:3.7.0'
, then use should be to use the below code:
GlideApp
.with(your context)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_image)
.error(R.drawable.error_image)
.into(myImageView);
Note: As in the documentation,
Round Pictures: CircleImageView/CircularImageView/RoundedImageView are known to have issues with TransitionDrawable (.crossFade() with .thumbnail() or .placeholder()) and animated GIFs, use a BitmapTransformation (.circleCrop() will be available in v4) or .dontAnimate() to fix the issue.
The latest updated version compile com.github.bumptech.glide:glide:4.1.1
then use should be to use the below code:
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);
See the latest version of glide, bug fixes and features.
If you want to use GlideApp you have to add to dependencies
annotation processor like on the screenshot:
Then include an AppGlideModule implementation in your application:
@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}
Do not forget about the @GlideModule
annotation.
Then you need to Build project. And GlideApp
will be automatically generated.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With