小民的ImageLoader 0.2版本 - 单一职责原则

06/09/17 12:03:52 D:\Users\kino.yan\Desktop\Android\temp\ImageLoader2.java
  1 
/**
  2 
 * 图片加载类
  3 
*/
  4 
public class ImageLoader {
  5 
    // 图片缓存
  6 
    ImageCache mImageCache = new ImageCache(); // ImageCache 是自定义类
  7 
    // 线程池,线程数量为 CPU 的数量
  8 
    ExecutorService mExecutorService = Executors.newFixedThreadPool(RunTime.getRuntime().availableProcessors());
  9 
   
 10 
    // 加载图片
 11 
    public void displayImage(final String url, final ImageView imageView) {
 12 
        // 优先使用缓存
 13 
        Bitmap bitmap = mImageCache.get(url);
 14 
        if(bitmap != null){
 15 
            imageView.setImageBitmap(bitmap);
 16 
            return;
 17 
        }
 18 
        imageView.setTag(url);
 19 
        // 使用线程池
 20 
        mExecutorService.submit(
 21 
            new Runnable(){
 22 
                @Override
 23 
                public void run(){
 24 
                    Bitmap bitmap = downloadImage(url);
 25 
                    if(bitmap == null)
 26 
                        return;
 27 
                    if(imageView.getTag().equals(url))
 28 
                        imageView.setImageBitmap(bitmap);
 29 
                    // 存入缓存
 30 
                    mImageCache.put(url, bitmap);
 31 
                }
 32 
            }
 33 
        );
 34 
    }
 35 
   
 36 
    /**
 37 
     * 下载图片,在加载图片方法中调用
 38 
     */
 39 
    public Bitmap downloadImage(String imageUrl) {
 40 
        Bitmap bitmap = null;
 41 
        try{
 42 
            URL url = new URL(imageUrl);
 43 
            final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
 44 
            bitmap = BitmapFactory.decodeStream(conn.getInputStream());
 45 
            conn.disconnect();
 46 
        }catch(Exception e){
 47 
            e.printStackTrace();
 48 
        }
 49 
        return bitmap;
 50 
    }
 51 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值