android通过url读取网络图片

本文介绍了一种简洁的使用AsyncTask在Android应用中下载并显示网络图片的方法,包括图片加载流程、进度展示及注意事项。通过实例代码演示如何在UI线程中调用并实现图片的异步加载,同时提供了优化方案以展示下载进度。

要注意的问题: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( "异步加载图片开始!" );
              String url =urls[ 0 ]; //"http://ww3.sinaimg.cn/bmiddle/6e91531djw1e8l3c7wo7xj20f00qo755.jpg";
              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好像过度封装了。

这让我想起了那张阴阳图,可能要实现进度条,我就要回去用代码量比较多的方法,懂得朋友留个言哈!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值