package com.third.imgload;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.ref.SoftReference;
import java.util.HashMap;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.ImageView;
import android.widget.ProgressBar;
public class AsyncImageLoader {
/**
* 内存图片软引用缓冲
*/
private HashMap<String, SoftReference<Bitmap>> imageCache = null;
public AsyncImageLoader() {
imageCache = new HashMap<String, SoftReference<Bitmap>>();
}
public Thread thread = null;
public Bitmap loadBitmap(final ImageView imageView, final String imageURL,
ImageCall_Back Call_back) {
// 在内存缓存中,则返回Bitmap对象
Bitmap bit = null;
if (imageCache.containsKey(imageURL)) {
SoftReference<Bitmap> reference = imageCache.get(imageURL);
Bitmap bitmap = reference.get();
if (bitmap != null) {
bit = bitmap;
}
} else {
/**
* 加上一个对本地缓存的查找
*/
String bitmapName = imageURL
.substring(imageURL.lastIndexOf("/") + 1);
File cacheDir = new File("/mnt/sdcard/hunuoImage/");
File[] cacheFiles = cacheDir.listFiles();
int i = 0;
if (null != cacheFiles) {
// begin
for (; i < cacheFiles.length; i++) {
if (bitmapName.equals(cacheFiles[i].getName())) {
break;
}
}
// end
// begin
if (i < cacheFiles.length) {
Bitmap bitmap = BitmapFactory
.decodeFile("/mnt/sdcard/hunuoImage/" + bitmapName);
bit = bitmap;
}
// end
}
}
if (bit == null) {
// 在本地找不到图片到网络找图片
new ImageAsynTask(imageURL, imageView, Call_back).execute();
}
return bit;
}
public interface ImageCall_Back {
public void imageLoad();
}
public interface ImageNewCallBack {
public void imageLoad(ImageView imageView, Bitmap bitmap);
}
}