浏览 7853 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
||
---|---|---|
作者 | 正文 | |
发表时间:2011-11-04
前些天写了一篇 关于
ListView只加载当前屏幕内的图片(解决list滑动时加载卡顿)的文章:
http://androidturing.iteye.com/blog/1210672这几天测试时发现了些可以改进的地方。 之前的方法确实能很有效的解决 :listview加载下一页时 因为图片较多异步加载的卡顿问题。 但是,发现在用手拖动ListView的时候,滚动出的item中的图片是不加载的。
原因是在onScrollStateChanged方法中监听,只能监听滚动状态的改变(拖动时它只执行一次),而在用手一直拖动时,系统是不回调onScrollStateChanged方法的,其中加载图片的方法自然是不会执行的!
为了让拖动列表时显示出来的item也加载图片,所以我添加了setOnTouchListener监听,便可完美解决这个问题:
/** * list 触摸监听 */ _listView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub if(event.getAction() == MotionEvent.ACTION_MOVE&&_scrollState!=OnScrollListener.SCROLL_STATE_FLING){ //这里加入加载图片的方法 和setOnScrollListener监听中的方法一样即可 } return false; } });要注意的是
当你的onTouchListener返回true时,那么touch事件就被拦截了,代表你自己处理了。onListItemClick变不会执行!! 返回false的话,就不会影响。 参加:
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
||
返回顶楼 | ||
发表时间:2011-11-05
楼主,我最近也遇到和你一样的问题,请教下能否给下做图片异步记载的详细实现过程?谢谢。
|
||
返回顶楼 | ||
发表时间:2011-11-07
Reizsoon 写道 楼主,我最近也遇到和你一样的问题,请教下能否给下做图片异步记载的详细实现过程?谢谢。
ListView异步加载图片的方法网上的帖子已经很多了,这里我就不赘述了。我建议你使用handler+线程池+软引用 的方式实现 |
||
返回顶楼 | ||
发表时间:2011-11-08
这个问题比较复杂,一直没有找到很好的方法解决。。。。
|
||
返回顶楼 | ||
发表时间:2011-11-08
上一篇文章走了弯路了,为什么加载20条数据,就一定要一次性下载20张图片?为什么不是滚到哪下载到哪?
参考下这个实现吧。 http://code.google.com/p/android-imagedownloader/ |
||
返回顶楼 | ||
发表时间:2011-11-08
zhuixinjian 写道 上一篇文章走了弯路了,为什么加载20条数据,就一定要一次性下载20张图片?为什么不是滚到哪下载到哪? 参考下这个实现吧。 http://code.google.com/p/android-imagedownloader/ 这个就是为了实现你说的这种功能啊,加载图片时并不是每次加载全部的,而是根据int firstVisibleItem,int visibleItemCount, int totalItemCount三个参数只加载当前屏幕item的图片。 |
||
返回顶楼 | ||