package com.dh.foundation.widget.afkimageview; import android.content.Context; import android.graphics.Bitmap; import android.util.AttributeSet; import com.dh.foundation.utils.ImageNetLoader; import com.dh.foundation.utils.StringUtils; /** * 带网络加载功能AfkImageView * Created By: Seal.Wu * Date: 2015/10/9 * Time: 10:19 */ public class NetAfkImageView extends AfkImageView { private final static String NULL = "null"; private static final ImageNetLoader imageNetLoader = new ImageNetLoader(); /** * 图片请求地址 */ private String url; public NetAfkImageView(Context context) { super(context); } public NetAfkImageView(Context context, AttributeSet attrs) { super(context, attrs); } public void setImageUrl(String url) { if (url == null) { url = NULL; } if (!StringUtils.equals(this.url, url) && StringUtils.isNotEmpty(this.url)) { imageNetLoader.cancel(this.url); } this.url = url; final String finalUrl = url; imageNetLoader.getBitmap(url, new ImageNetLoader.SimpleBitmapReceiver() { @Override public void onReceiveBitmap(Bitmap bitmap, boolean isImmediate) { if (NetAfkImageView.this.url.equals(finalUrl)) { setTransitionAnimationEnable(!isImmediate); setImageBitmap(bitmap); } } }); } public void setImageUrl(String url, final int errorImageResId, final int defaultImageResId) { if (url == null) { url = NULL; } if (!StringUtils.equals(this.url, url) && StringUtils.isNotEmpty(this.url)) { imageNetLoader.cancel(this.url); } this.url = url; setTransitionAnimationEnable(false); setImageResource(defaultImageResId); final String finalUrl = url; imageNetLoader.getBitmap(url, new ImageNetLoader.BitmapReceiver() { @Override public void onReceiveBitmap(Bitmap bitmap, boolean isImmediate) { if (NetAfkImageView.this.url.equals(finalUrl)) { setTransitionAnimationEnable(!isImmediate); setImageBitmap(bitmap); } } @Override public void onError(Throwable error) { if (NetAfkImageView.this.url.equals(finalUrl)) { setTransitionAnimationEnable(false); setImageResource(errorImageResId); } } }); } @Override protected void onDetachedFromWindow() { if (url != null) { imageNetLoader.cancel(url); } super.onDetachedFromWindow(); } }