排球的NetworkImageView - setImageBitmap方法不起作用 [英] Volley's NetworkImageView - setImageBitmap method doesn't work

查看:378
本文介绍了排球的NetworkImageView - setImageBitmap方法不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

即时通讯使用在我的项目凌空库。

Im using volley library in my project.

我通常让使用NetworkImageView下载图片setImageUrl方式:

I usually let the NetworkImageView download images using setImageUrl method:

networkImageView.setImageUrl(imageUrl, mImageLoader)

这工作得很好,但是......当我尝试手动下载位图使用ImageLoader的的get方法,然后通过设置位图我自己,这是行不通的:

This works fine, But.. When I try to download the bitmap "manually" using ImageLoader's get method, and then set the bitmap by myself, it doesn't work:

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.setImageBitmap(imageContainer.getBitmap()) line does nothing.

这怎么可能? 在此先感谢!

How could it be? Thanks in advance!

推荐答案

该版本的<一个href="https://android.googlesource.com/platform/frameworks/volley/+/jb-mr2-release/src/com/android/volley/toolbox/NetworkImageView.java">NetworkImageView修复此问题。

This version of NetworkImageView fixes this issue.

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);
        }
    }

}

这篇关于排球的NetworkImageView - setImageBitmap方法不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆