Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Glide-4.0.0 Missing placeholder, error, GlideApp and does not resolve its method placeholder,error

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() instead Glide.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);
like image 514
Ritesh Bhavsar Avatar asked Aug 03 '17 10:08

Ritesh Bhavsar


3 Answers

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

  • How to use requestOptions.circleCropTransform();
  • How to use Cross fades()
  • How to use GlideDrawableImageViewTarget in Glide-4
  • How to use GifDrawable as target parameter
like image 68
AskNilesh Avatar answered Nov 14 '22 14:11

AskNilesh


If 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.

like image 43
ND1010_ Avatar answered Nov 14 '22 15:11

ND1010_


If you want to use GlideApp you have to add to dependencies annotation processor like on the screenshot:

How to add GlideApp to your project

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.

like image 10
Vlad Pylyp Avatar answered Nov 14 '22 14:11

Vlad Pylyp