package com.laowch.githubtrends.utils; import android.content.Context; import android.net.Uri; import android.text.TextUtils; import android.util.AttributeSet; import android.widget.ImageView; import com.laowch.githubtrends.R; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; /** * Created by lao on 3/4/14. */ public class AsyncImageView extends ImageView { String url; ImageLoadingListener imageLoadingListener; public AsyncImageView(final Context context) { super(context); init(); } public AsyncImageView(final Context context, final AttributeSet attrs) { super(context, attrs); init(); } public AsyncImageView(final Context context, final AttributeSet attrs, final int defStyle) { super(context, attrs, defStyle); init(); } public void setImageLoadingListener(ImageLoadingListener listener) { this.imageLoadingListener = listener; } protected void init() { } public void loadImage(final String imageUrl) { if (imageUrl != null && url != null) { if (Uri.parse(imageUrl).getPath().equals(Uri.parse(url).getPath())) { return; } } url = imageUrl; executeLoadImage(); } protected void executeLoadImage() { if (TextUtils.isEmpty(url)) { setImageResource(R.drawable.image_loading_resource); } else { DisplayImageOptions.Builder builder = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.image_loading_resource) .cacheInMemory(true) .cacheOnDisk(true) .displayer(new SimpleBitmapDisplayer()); DisplayImageOptions options = builder.build(); ImageLoader.getInstance().displayImage(url, this, options, imageLoadingListener); } } }