public class AsyncImageLoader {


private HashMap<String, SoftReference<Bitmap>> imageCache;
private static AsyncImageLoader asyncImageLoader;


public AsyncImageLoader() {
imageCache = new HashMap<String, SoftReference<Bitmap>>();
}


/**
* @return 得到类实例
*/
public static AsyncImageLoader getInstance() {
if (asyncImageLoader == null) {
asyncImageLoader = new AsyncImageLoader();
}
return asyncImageLoader;
}


/**
* @param imageUrl
* 图片url
* @param imageCallback
* 回调函数
* @return 图片
*/
public Bitmap loadDrawable(final String imageUrl,
final ImageCallback imageCallback) {
if (imageCache.containsKey(imageUrl)) {
SoftReference<Bitmap> softReference = imageCache.get(imageUrl);
Bitmap bitmap = softReference.get();
if (bitmap != null) {
return bitmap;
}
}
final Handler handler = new Handler() {
public void handleMessage(Message message) {
imageCallback.imageLoaded((Bitmap) message.obj, imageUrl);
}
};
new Thread() {
@Override
public void run() {
Bitmap bitmap = loadImageFromUrl(imageUrl);
imageCache.put(imageUrl, new SoftReference<Bitmap>(bitmap));
Message message = handler.obtainMessage(0, bitmap);
handler.sendMessage(message);
}
}.start();
return null;
}


/**
* @param url
* 图片url
* @return 下载到的图片
*/
public static Bitmap loadImageFromUrl(String url) {
URL m;
InputStream i = null;
try {
m = new URL(url);
HttpURLConnection conn = (HttpURLConnection) m.openConnection();
conn.setConnectTimeout(30 * 1000);
conn.setRequestMethod("GET");
i = conn.getInputStream();

} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Bitmap bitmap = BitmapFactory.decodeStream(i);
// Drawable d = Drawable.createFromStream(i, "src");
return bitmap;
}


public interface ImageCallback {
public void imageLoaded(Bitmap imageBitmap, String imageUrl);
}


}

更多相关文章

  1. Android(安卓)Imageview图片旋转和大小变化
  2. Android图片旋转,缩放,移位,倾斜,对称
  3. android 关于图片的放大,缩小,旋转功能的实现(附源码)
  4. Android(安卓)笑话+html 实例开发(详解)
  5. Android的GridView控件点击图片变暗效果
  6. Android(安卓)NDK开发(一)环境搭建及运行示例
  7. [Android] ImageButton | Button | TextView 点击和触摸效果实现
  8. Android新手入门实例之Android漂亮时钟的源代码
  9. 箭头函数的基础使用

随机推荐

  1. Android图像处理技术(实现Android中的PS)(一
  2. Android点击WebView网页中的email发送邮
  3. Android 仿微信的键盘切换
  4. Android 视图动画(View Animation) 使用
  5. Android 应用的版本兼容 了解一下(理解 mi
  6. Android 使用WindowManager打造通用悬浮
  7. Android 不能使用内部资源
  8. Android [Camera 源码] 相机 HAL3(Camera
  9. Android系统进程Zygote启动过程的源代码
  10. android 通用的功能集锦