我在我的项目中使用 volley 库。
我通常让 NetworkImageView 使用 setImageUrl 方法下载图片:
networkImageView.setImageUrl(imageUrl, mImageLoader)
这很好,但是..当我尝试使用 ImageLoader 的 get 方法“手动”下载位图,然后自己设置位图时,它不起作用:
mImageLoader.get(imageUrl,new ImageLoader.ImageListener()
{
@Override
public void onResponse(ImageLoader.ImageContainer imageContainer, boolean b)
{
if (imageContainer.getBitmap() != null)
{
networkImageView.setImageBitmap(imageContainer.getBitmap());
}
}
@Override
public void onErrorResponse(VolleyError volleyError)
{
}
});
networkImageView.setImageBitmap(imageContainer.getBitmap()) 行什么都不做。
怎么可能? 提前致谢!
最佳答案
这个版本的NetworkImageView修复了这个问题。
public class CustomNetworkImageView extends NetworkImageView {
private Bitmap mLocalBitmap;
private boolean mShowLocal;
public void setLocalImageBitmap(Bitmap bitmap) {
if (bitmap != null) {
mShowLocal = true;
}
this.mLocalBitmap = bitmap;
requestLayout();
}
@Override
public void setImageUrl(String url, ImageLoader imageLoader) {
mShowLocal = false;
super.setImageUrl(url, imageLoader);
}
public CustomNetworkImageView(Context context) {
this(context, null);
}
public CustomNetworkImageView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CustomNetworkImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (mShowLocal) {
setImageBitmap(mLocalBitmap);
}
}
}
关于android - Volley 的 NetworkImageView - setImageBitmap 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21270152/