
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 }

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架