你如何在使用Glide、Picasso等图像加载器时使用带有动画旋转器的加载占位符?

9

我正在尝试在使用像Glide或Picasso这样的图像加载库加载图片时,插入通用的加载圈作为占位符。

我找不到如何从xml创建旋转Drawable的方法。

我尝试通过创建一个动画列表(animation-list)中的XML文件来使用AnimationDrawable,但它甚至没有出现(即使是静态的都没有)。

我只想要一个简单的自转圆圈,全部在XML可绘制文件中,以便我可以将其ID作为占位符传递给我的图像加载程序。如果不可能,请告诉我,这样我就可以节省很多研究时间 :)

编辑:为了让它更加清晰,以下是需要旋转Drawable的Glide命令:

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

在图片加载时会显示一个占位符drawable,稍后将显示图片。我需要一个自旋转的drawable。


2
也许这个主题 https://github.com/bumptech/glide/issues/505 会有所帮助? - CoolMind
1
嘿,CoolMind,感谢你的回答!我不确定,因为这个问题已经几年了,但是感谢你指引我正确的方向,它看起来很有用,也许有一天我会回到你的答案,并且它肯定会帮助其他人。 - A. Steenbergen
A. Steenbergen,谢谢!我知道时间过去太久了,很抱歉。我没有这个问题,但最近遇到了ProgressBar可见性的问题(通过https://dev59.com/U4Dba4cB1Zd3GeqPIL51#38849129解决)。还想附上这些链接:https://dev59.com/sVsW5IYBdhLWcg3wKkne和https://github.com/bumptech/glide/issues/232。 - CoolMind
2个回答

0
您可以在布局XML中添加一个ProgressBar元素,然后根据需要显示/隐藏此元素。 ProgressBar视图是内置的并且已经动画化,不需要自定义AnimationDrawable。

2
谢谢,但这不是我需要的。我正在使用bumptech的glide图像加载库从服务器加载一系列图像,当图像正在加载时,为每个图像显示占位符drawable,以后将显示真实图像。我希望这个占位符是一个旋转的动画圆圈,以表示图像正在加载,为此我需要这个旋转圆圈是一个单独的drawable,没有额外的代码,如对象动画器或代码中的动画。我添加了一些代码,使它更清晰。 - A. Steenbergen
2
你解决了这个问题吗,Doge?我也急需一个解决方案。 - Marka A

0
你可以使用类似这样的代码:
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);
        }
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接