图片异步下载加载代码

 1 import java.io.IOException;
 2 import java.io.InputStream;
 3 import java.util.HashMap;
 4 import java.util.Map;
 5 
 6 import org.apache.http.HttpResponse;
 7 import org.apache.http.client.ClientProtocolException;
 8 import org.apache.http.client.methods.HttpGet;
 9 import org.apache.http.impl.client.DefaultHttpClient;
10 
11 import android.graphics.drawable.Drawable;
12 import android.os.Handler;
13 import android.os.Message;
14 import android.widget.ImageView;
15 
16 public class DrawableManager {
17 
18     private final Map<String, Drawable> drawableMap;
19 
20     public DrawableManager() {
21         drawableMap = new HashMap<String, Drawable>();
22     }
23 
24     public Drawable fatchDrawable(String urlString) {
25         if (drawableMap.containsKey(urlString)) {
26             return drawableMap.get(urlString);
27         }
28         try {
29             InputStream is = fetch(urlString);
30             Drawable drawable = Drawable.createFromStream(is, "src");
31             drawableMap.put(urlString, drawable);
32             return drawable;
33         } catch (ClientProtocolException e) {
34             // TODO Auto-generated catch block
35             e.printStackTrace();
36             return null;
37         } catch (IOException e) {
38             // TODO Auto-generated catch block
39             e.printStackTrace();
40             return null;
41         }
42 
43     }
44 
45     public void fetchDrawableOnThread(final String urlString,
46             final ImageView imageView) {
47         if (drawableMap.containsKey(urlString)) {
48             imageView.setImageDrawable(drawableMap.get(urlString));
49         }
50         final Handler handler = new Handler() {
51 
52             @Override
53             public void handleMessage(Message msg) {
54                 // TODO Auto-generated method stub
55                 imageView.setImageDrawable((Drawable) msg.obj);
56             }
57         };
58 
59         Thread thread = new Thread() {
60 
61             @Override
62             public void run() {
63                 // TODO Auto-generated method stub
64                 Drawable drawable = fatchDrawable(urlString);
65                 Message msg = handler.obtainMessage(1, drawable);
66                 handler.sendMessage(msg);
67             }
68         };
69         thread.start();
70     }
71 
72     private InputStream fetch(String urlString) throws ClientProtocolException,
73             IOException {
74         DefaultHttpClient httpClient = new DefaultHttpClient();
75         HttpGet request = new HttpGet(urlString);
76         HttpResponse response = httpClient.execute(request);
77         return response.getEntity().getContent();
78 
79     }
80 }
posted @ 2012-04-20 16:12  灰太狼_lilongmin  阅读(172)  评论(0编辑  收藏  举报