能下载url地址图片的ImageView

源码路径:com.ab.view.sample.AbNetworkImageView
比ImageView更强大的ImageView,它支持设置url后自动下载缓存图片,同样它也需要对AbImageDownloader进行设置,看看应用的代码:

//图片的下载
mAbImageDownloader = new AbImageDownloader(this);
mAbImageDownloader.setLoadingImage(R.drawable.image_loading);
mAbImageDownloader.setErrorImage(R.drawable.image_error);
mAbImageDownloader.setNoImage(R.drawable.image_no);
                
//自动获取
mAbImageDownloader.setWidth(150);
mAbImageDownloader.setHeight(150);
mAbImageDownloader.setType(AbConstant.SCALEIMG);
netView.setImageUrl(imageUrl, mAbImageDownloader);

那么这个自定义的ImageView的代码也比较简单,主要方法为:setImageUrl(String url, AbImageDownloader abImageDownloader)
代码示例:
package com.ab.view.sample;
 
import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
 
import com.ab.bitmap.AbImageDownloader;
 
/**
 * 
 * Copyright (c) 2012 All rights reserved
 * 名称:AbNetworkImageView.java 
 * 描述:根据url下载图片的网络ImageView
 * @author zhaoqp
 * @date:2013-11-12 上午10:09:55
 * @version v1.0
 */
public class AbNetworkImageView extends ImageView {
     
    /** 图片的url */
    private String mUrl;
 
    /**图片下载器*/
    private AbImageDownloader mAbImageDownloader = null;
 
 
    public AbNetworkImageView(Context context) {
        this(context, null);
    }
 
    public AbNetworkImageView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }
 
    public AbNetworkImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
 
    /**
     * 
     * 描述:设置图片的URL
     * @param url
     * @param abImageDownloader
     * @throws 
     */
    public void setImageUrl(String url, AbImageDownloader abImageDownloader) {
        mUrl = url;
        mAbImageDownloader = abImageDownloader;
        loadImageIfNecessary(false);
    }
 
    /**
     * 
     * 描述:如果未加载就加载
     * @param isInLayoutPass
     * @throws 
     */
    private void loadImageIfNecessary(final boolean isInLayoutPass) {
        int width = getWidth();
        int height = getHeight();
 
        boolean isFullyWrapContent = getLayoutParams() != null
                && getLayoutParams().height == LayoutParams.WRAP_CONTENT
                && getLayoutParams().width == LayoutParams.WRAP_CONTENT;
         
        if (width == 0 && height == 0 && !isFullyWrapContent) {
            return;
        }
 
        if (TextUtils.isEmpty(mUrl)) {
            setImageBitmap(null);
            return;
        }
         
        //图片的下载
        mAbImageDownloader.display(this,mUrl);
         
    }
 
    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        loadImageIfNecessary(true);
    }
 
    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
    }
 
    @Override
    protected void drawableStateChanged() {
        super.drawableStateChanged();
        invalidate();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值