图片异步下载加载代码

import java.io.IOException;

import java.io.InputStream;

import java.util.HashMap;

import java.util.Map;



import org.apache.http.HttpResponse;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;



import android.graphics.drawable.Drawable;

import android.os.Handler;

import android.os.Message;

import android.widget.ImageView;



public class DrawableManager {



    private final Map<String, Drawable> drawableMap;



    public DrawableManager() {

        drawableMap = new HashMap<String, Drawable>();

    }



    public Drawable fatchDrawable(String urlString) {

        if (drawableMap.containsKey(urlString)) {

            return drawableMap.get(urlString);

        }

        try {

            InputStream is = fetch(urlString);

            Drawable drawable = Drawable.createFromStream(is, "src");

            drawableMap.put(urlString, drawable);

            return drawable;

        } catch (ClientProtocolException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

            return null;

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

            return null;

        }



    }



    public void fetchDrawableOnThread(final String urlString,

            final ImageView imageView) {

        if (drawableMap.containsKey(urlString)) {

            imageView.setImageDrawable(drawableMap.get(urlString));

        }

        final Handler handler = new Handler() {



            @Override

            public void handleMessage(Message msg) {

                // TODO Auto-generated method stub

                imageView.setImageDrawable((Drawable) msg.obj);

            }

        };



        Thread thread = new Thread() {



            @Override

            public void run() {

                // TODO Auto-generated method stub

                Drawable drawable = fatchDrawable(urlString);

                Message msg = handler.obtainMessage(1, drawable);

                handler.sendMessage(msg);

            }

        };

        thread.start();

    }



    private InputStream fetch(String urlString) throws ClientProtocolException,

            IOException {

        DefaultHttpClient httpClient = new DefaultHttpClient();

        HttpGet request = new HttpGet(urlString);

        HttpResponse response = httpClient.execute(request);

        return response.getEntity().getContent();



    }

}

你可能感兴趣的:(下载)