Android中ListView使用- 网络图片的异步加载
2010-09-24 21:59
741 查看
最近自己在试着使用Android开发一个新浪微薄的手机客户端,学习Android 的应用开发,来做点笔记吧。
主要讲讲ListView的使用过程中的一些问题。
我从新浪服务器获取数据,有文本有图片,通过图片的URL来载入图片,但是在Android的SDK中ListView默认的是不能支持通过URL来载入网络图片的,需要自己重写其中的SDK的默写类中的方法。我们知道,ListView一般是配合ListActivity使用的,在使用时需要传入SimpleAdatper对象来和数据进行绑定,我通过阅读SimpleAdapter的源码发现,只要我们改写七种的方法setViewImage的实现即可以达到目的。
一开始我是这样改的:
但是运行的时候发现界面很容易就死掉了,无法动弹,用户体验不行。
细想,手机客户端访问网络的速度显然是不能和PC相比的,哪怕小小的图片文件可能也需要很长的一段时间,何况是一个列表有好多个待下载的图片呢,不死才怪。
于是乎想到异步下载图片,于是重写setViewImage()函数的实现:
这下好了,用户可以首先看到显示的文本信息,图片可以在用户浏览文字的同时多线程的下载,不会影响用户体验。
上图:
主要讲讲ListView的使用过程中的一些问题。
我从新浪服务器获取数据,有文本有图片,通过图片的URL来载入图片,但是在Android的SDK中ListView默认的是不能支持通过URL来载入网络图片的,需要自己重写其中的SDK的默写类中的方法。我们知道,ListView一般是配合ListActivity使用的,在使用时需要传入SimpleAdatper对象来和数据进行绑定,我通过阅读SimpleAdapter的源码发现,只要我们改写七种的方法setViewImage的实现即可以达到目的。
一开始我是这样改的:
public void setViewImage(ImageView v, String value) { Bitmap bmp = BitmapFactory.decodeStream(new URL(value).openStream); v.setImageBitmap(bmp); }
但是运行的时候发现界面很容易就死掉了,无法动弹,用户体验不行。
细想,手机客户端访问网络的速度显然是不能和PC相比的,哪怕小小的图片文件可能也需要很长的一段时间,何况是一个列表有好多个待下载的图片呢,不死才怪。
于是乎想到异步下载图片,于是重写setViewImage()函数的实现:
public void setViewImage(ImageView v, String value) { new ImageDownloadTask().execute(value, v); } private class ImageDownloadTask extends AsyncTask<Object, Object, Bitmap>{ private ImageView imageView = null; @Override protected Bitmap doInBackground(Object... params) { // TODO Auto-generated method stub Bitmap bmp = null; imageView = (ImageView) params[1]; try { bmp = BitmapFactory.decodeStream(new URL((String)params[0]).openStream()); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return bmp; } protected void onPostExecute(Bitmap result){ imageView.setImageBitmap(result); } }
这下好了,用户可以首先看到显示的文本信息,图片可以在用户浏览文字的同时多线程的下载,不会影响用户体验。
上图:
相关文章推荐
- Android实现异步从网络加载图片列表和上拉加载更多、下拉刷新列表(使用xListView框架实现)
- Android使用ImageLoader异步加载网络图片(二)结合listview
- Android中ListView使用- 网络图片的异步加载
- Android之ListView异步加载网络图片(优化缓存机制)
- Android UI-开源框架ImageLoader完美使用+listview加载网络图片与下载
- 深入剖析Android之ListView从网络异步加载图片
- 【Android进阶】ListView使用“内存双缓存+硬盘缓存”加载网络图片
- Android----ListView的使用--->加载网络图片
- wemall app商城源码Android之ListView异步加载网络图片(优化缓存机制)
- Android之ListView异步加载网络图片(优化缓存机制)和对图片资源进行优化,并且实现内存双缓存 + 磁盘缓存
- Android之ListView异步加载网络图片(优化缓存机制)
- android中listView实现异步加载网络图片
- Android使用ImageLoader异步加载网络图片(一)读取单张图片
- Android之ListView异步加载网络图片(优化缓存机制)
- Android控件使用—Listview加载网络数据、图片并跳转传值
- Android ListView异步加载网络图片出现位置错乱闪烁及优化ListView的加载
- Android 解决ListView异步加载网络数据(图片文字)出现位置错乱以及优化ListView的加载
- Android之ListView异步加载网络图片(优化缓存机制)
- Android异步下载网络图片&android解析xml文件的方式&使用Adapter为ListView提供数据
- Android批量图片加载经典系列——使用xutil框架缓存、异步加载网络图片