最近自己在试着使用Android开发一个新浪微薄的手机客户端,学习Android 的应用开发,来做点笔记吧。
主要讲讲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);
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Garfier/archive/2010/09/24/5903868.aspx
这下好了,用户可以首先看到显示的文本信息,图片可以在用户浏览文字的同时多线程的下载,不会影响用户体验。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Garfier/archive/2010/09/24/5903868.aspx
分享到:
相关推荐
AsyncTask的使用及ListView的常见优化 asyncTask异步加载数据 使用了LruCache优化图片加载 通过滑动监听提高ListView滑动流畅度.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习...
Android项目实战-ListView异步图片加载及压缩缓存
Android实现ListView异步加载图片
Android中ListView全面完美的网络图片的异步加载,两种加载方式,利用了LruCache缓存,动态加载,只加载可见部分的图片.
Android Listview异步加载图片,图片错位解决方案
android listView图片异步加载(拖动时不加载,双缓存)
android listview 异步加载网络图片
Android 异步加载图片,对ListView的异步加载图片的功能演示,主要根据url读取图片返回流的方法。为了方便演示,将请求图片的链接先固定,每读取好一个图片就更新,界面比较简单,当然你可以做成比较好的,像很多好...
今天要介绍的是Github上一个使用非常广泛的图片异步加载库Android-Universal-Image-Loader
Android高级应用源码-listview实现图片的异步加载.zip
Android中ListView控件实现数据的异步分批加载
安卓Android源码——listview实现图片的异步加载.zip
本文实例讲述了Android实现Listview异步加载网络图片并动态更新的方法。分享给大家供大家参考,具体如下: 应用实例:解析后台返回的数据,把每条都显示在ListView中,包括活动图片、店名、活动详情、地址、电话和...
listview实现图片的异步加载.rar
android异步加载网络图片到ListView
Android listview实现图片的异步加载Demo.zip
android应用开机动画,图片的异步加载(本地和网络),从此ListView一点也不卡,很顺畅。
android listview异步加载图片实例 用到了线程池 下载的图片会保存到本地 并在数据库中保留记录 再次加载时会直接从本地读取