Пример #1
0
  public Bitmap loadImage(
      final String imageName,
      final String imgUrl,
      final boolean isbusy,
      final ImageCallback callback) {

    Bitmap bitmap = null;
    if (imageCache.containsKey(imgUrl)) {
      SoftReference<Bitmap> softReference = imageCache.get(imgUrl);
      bitmap = softReference.get();
      if (bitmap != null) {
        Log.i("m", "从内存获得图片成功。。");
        callback.loadImage(bitmap, imgUrl);
        return bitmap;
      }
    }
    // if(!isbusy){
    // 从本地获取图片
    bitmap = getBitmapFromData(imageName, mContext);
    // System.out.println("从本地获取图片");
    // }
    if (bitmap != null) {
      imageCache.put(imgUrl, new SoftReference<Bitmap>(bitmap));
      Log.i("m", "从本地获得图片成功。。");
      callback.loadImage(bitmap, imgUrl);
      return bitmap;
    } else { // 从网络获取图片
      final Handler handler =
          new Handler() {
            @Override
            public void handleMessage(Message msg) {
              if (msg.obj != null) {
                synchronized (imageCache) {
                  Map<String, Bitmap> bitmapMap = (Map) msg.obj;
                  for (String str : bitmapMap.keySet()) {
                    mbitmap = bitmapMap.get(str);
                    url = str;
                    imageCache.put(url, new SoftReference<Bitmap>(mbitmap));
                  }

                  if (android.os.Environment.getExternalStorageState()
                      .equals(android.os.Environment.MEDIA_MOUNTED)) {
                    try {
                      String imageName = url.substring(url.lastIndexOf("/") + 1, url.length());
                      if (!imageName.endsWith(".jpg") && !imageName.endsWith(".png")) {
                        imageName += ".png";
                      }
                      String mImagePath = ImageUtil.IMAGE_PATH + imageName;
                      /*if (url.endsWith(".png")) {
                      	saveImagePng(mImagePath, mbitmap);
                      } else if (url.endsWith(".jpg")) {
                      	saveImageJpeg(mImagePath, mbitmap);
                      }*/
                      saveBitmapToData(imageName, mbitmap, mContext);
                      // System.out.println("向SD卡获取图片");

                    } catch (Exception e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                    }
                  }

                  callback.loadImage(mbitmap, url);
                }
              }
            }
          };

      getImageRunnable run = new getImageRunnable(imgUrl, handler, callback);
      ThreadPoolManager.getInstance().addTask(run);
    }
    return bitmap;
  }