android通过url读取网络图片

要注意的问题:1.android4.0后,代码不能写在ui线程,急oncreate方法里,要进行异步处理。

2.想想,就是通过url取网络图片嘛,我直接给他一个url好了嘛,然后它就给我取出来。 这边分享一个比较简洁的实现方式:

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("异步加载图片完成!");
	     }
	 }

再在ui线程中调用  new DownLoadImage(switcher).execute(img_url);就可以啦。   函数里的 ImageSwitcher imageSwitcher;可以换成imageview或者其他控件

上面的方法读取图片也就用到这两行

 InputStream is = new java.net.URL(url).openStream(); 
	    	 tmpBitmap = BitmapFactory.decodeStream(is);

很简洁,可是问题来了:   我想搞个进度条来显示图片下载的进度,这个inputstream好像过度封装了。

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值