要注意的问题:1.android4.0后,代码不能卸载ui。
2.想想,就是通过url取网络图片嘛,我直接给他一个url好了嘛,然后它就给我取出来。 这边分享一个比较简洁的实现方式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
private
class
DownLoadImage
extends
AsyncTask<string, integer,=
""
bitmap=
""
> {
ImageSwitcher imageSwitcher;
public
DownLoadImage(ImageSwitcher is) {
this
.imageSwitcher = is;
}
protected
Bitmap doInBackground(String... urls) {
System.out.println(
"异步加载图片开始!"
);
System.out.println(url);
Bitmap tmpBitmap =
null
;
try
{
InputStream is =
new
java.net.URL(url).openStream();
tmpBitmap = BitmapFactory.decodeStream(is);
is.close();
}
catch
(Exception e) {
e.printStackTrace();
Log.i(
"KK下载图片"
, e.getMessage());
}
return
tmpBitmap;
}
@Override
protected
void
onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super
.onProgressUpdate(values);
System.out.println(
"进程进度:"
+values);
}
protected
void
onPostExecute(Bitmap result) {
//TODO:
//把bitmap转drawable
Resources res=getResources();
Drawable bd=
new
BitmapDrawable(res,result);
imageSwitcher.setImageDrawable(bd);
System.out.println(
"异步加载图片完成!"
);
}
}
</string,>
|
再在ui线程中调用 new DownLoadImage(switcher).execute(img_url);就可以啦。 函数里的ImageSwitcher imageSwitcher;可以换成imageview或者其他控件
上面的方法读取图片也就用到这两行
1
2
|
InputStream is =
new
java.net.URL(url).openStream();
tmpBitmap = BitmapFactory.decodeStream(is);
|
很简洁,可是问题来了: 我想搞个进度条来显示图片下载的进度,这个inputstream好像过度封装了。
这让我想起了那张阴阳图,可能要实现进度条,我就要回去用代码量比较多的方法,懂得朋友留个言哈!