安卓異步圖片加載器

異步圖片加載器,只百度到了drawable版,現已改造成bitmap版……需要的同學請拿去大笑


public class AsyncImageLoader {


private HashMap<String, SoftReference<Bitmap>> imageCache;
        private  Bitmap pc_loading_fali;


    public AsyncImageLoader(Bitmap bm) {
        imageCache = new HashMap<String, SoftReference<Bitmap>>();
        pc_loading_fali=bm;
       }
    
    public  Bitmap loadBitmap(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 pc_loading_fali;
    }
 
   public static Bitmap loadImageFromUrl(String url) {
       URL m;
       InputStream i = null;
       try {
           m = new URL(url);
           i = (InputStream) m.getContent();
       } catch (MalformedURLException e1) {
           e1.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       }
      
       
       Bitmap bmp=BitmapFactory.decodeStream(i);
 
       return bmp;
   }
  
    public class ImageCallback {                                                          //回調函數,本應該搞成接口的,偷懶搞成了類,使用的時候簡單點。
    private ImageView imageView;
   
    public ImageCallback(ImageView iV){
    imageView=iV;
    }
   
   
     public void imageLoaded(Bitmap imageBitmap, String imageUrl){
        imageView.setImageBitmap(imageBitmap); 
                  }  

        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章