'How can you use a loading placeholder that is an animated spinner with image loaders like Glide, Picasso etc?

I am trying to insert a generic loading circle as placeholder while an image is being loaded with an image loader library like Glide or Picasso.

I cannot for the life of me find out how you are supposed to create a rotating drawable from xml.

I tried using an AnimationDrawable in XML by creating an animation-list, but it doesn't even show up (not even static).

I just want to have a simple circle that spins all by itself, all in an xml drawable, so I can pass the id as placeholder to my image loader. If that is not possible please tell me now, so I can save a lot of research :)

EDIT: Some code to make it more clear, I need a spinning drawable for this Glide command:

Glide.with(context)
.load(imageUrl)
.into(imageView)
.placeHolder(R.drawable.spinning_loading_placeholder);

While the image is being loaded a placeholder drawable will be shown where the image will later be. I need a drawable that spins itself.



Solution 1:[1]

You can add a ProgressBar element to your layout XML, and then display/hide this element as needed. The ProgressBar View is built in and already animated, no custom AnimationDrawable required.

Solution 2:[2]

You can use something like this:

Glide.with(mContext).load(imageUrl).asBitmap().centerCrop().into(new BitmapImageViewTarget(vh.avatarImageView) {

        @Override
        public void onLoadStarted(Drawable placeholder) {
                vh.avatarImageView.setImageDrawable(mContext.getResources().getDrawable(R.drawable.ic_placeholder));
        }

        @Override
        public void onLoadFailed(Exception e, Drawable errorDrawable) {
            vh.avatarImageView.setImageDrawable(mContext.getResources().getDrawable(R.drawable.ic_failed_download));
        }

        @Override
        protected void setResource(Bitmap resource) {
            RoundedBitmapDrawable circularBitmapDrawable =
                    RoundedBitmapDrawableFactory.create(mContext.getResources(), resource);
            circularBitmapDrawable.setCircular(true);
            vh.avatarImageView.setImageDrawable(circularBitmapDrawable);
        }
    });

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 eshayne
Solution 2 Nils Kassube