android下listview的优化和listview的异步加载全攻略(非常实用)
来源:互联网 发布:淘宝开店认证怎么修改 编辑:程序博客网 时间:2024/04/28 06:44
效果图如上:
异步加载的核心类:
AsyncImageLoader
package cn.wangmeng.test;import java.io.IOException;import java.io.InputStream;import java.lang.ref.SoftReference;import java.net.MalformedURLException;import java.net.URL;import java.util.HashMap;import android.graphics.drawable.Drawable;import android.os.Handler;import android.os.Message;/** * 异步加载图片类*@author hsx *@date 2012-11-21 *@Description */public class AsyncImageLoader { /** * SoftReference的语义就是当内存不够用的时候,GC会回收SoftReference所引用的对象。 * 所以,在memory sensitive的程序中将某些大型数据设置成SoftReference再合适不过了。 */private HashMap<String, SoftReference<Drawable>> imageCache; /** * 该类的构造方法 */public AsyncImageLoader() {imageCache = new HashMap<String, SoftReference<Drawable>>();} /** * *@author hsx *@Description 获得Drawable的对象 *@param imageUrl *@param imageCallback *@return * */public Drawable loadDrawable(final String imageUrl, final ImageCallback imageCallback){/** * 调用该方法后,先执行此句,如果imageCache中有imageUrl这个key则,取出对应的drawable对象 */if (imageCache.containsKey(imageUrl)) {SoftReference<Drawable> softReference = imageCache.get(imageUrl);/** * 获得软引用中的Drawable对象 */Drawable drawable = softReference.get();if (drawable != null){return drawable;}}/** * 否则执行线程操作 */final Handler handler = new Handler() {public void handleMessage(Message message){/** * 此处调用imageLoaded方法已经在adapter中重写的方法 了,将获取到的Drawable对象赋给该方法 */imageCallback.imageLoaded((Drawable) message.obj, imageUrl);}};new Thread(){@Overridepublic void run() {Drawable drawable = loadImageFromUrl(imageUrl);imageCache.put(imageUrl, new SoftReference<Drawable>(drawable));Message message = handler.obtainMessage(0, drawable);handler.sendMessage(message);}}.start();return null;}public static Drawable loadImageFromUrl(String url){URL m;InputStream i = null;try {m = new URL(url);i = (InputStream) m.getContent();} catch (MalformedURLException e1) {e1.printStackTrace();} catch (IOException e) {e.printStackTrace();}Drawable d = Drawable.createFromStream(i, "src");return d;} /** * 接口中有个方法imageLoaded *@author hsx *@date 2012-11-21 *@Description */public interface ImageCallback {public void imageLoaded(Drawable imageDrawable, String imageUrl);}}
源码未完,请点击链接下载完整源码
源码下载地址:http://download.csdn.net/detail/abc13939746593/4817333
- android下listview的优化和listview的异步加载全攻略(非常实用)
- android下listview的分页更多加载(效果非常实用)
- ListView的异步加载&优化
- 优化Android ListView中图片的异步加载显示
- listview的异步加载性能优化
- Android ListView异步加载网络图片出现位置错乱闪烁及优化ListView的加载
- Android 解决ListView异步加载网络数据(图片文字)出现位置错乱以及优化ListView的加载
- listView的异步加载
- Listview的异步加载
- ListView的异步加载
- Android ListView和异步加载图片的问题
- ListView异步加载图片是非常实用的方法
- ListView异步加载优化
- ListView异步加载优化
- listview异步加载优化
- Android ListView&异步加载的学习(三)——AsyncTask加载图片&运用Lru算法优化图片加载
- Android ListView异步加载图片优化
- Android ListView性能优化,异步加载图片
- 如何修改镜像连接超时值mirroring_connection_timeout
- javascript select下拉选择框多级联动
- 关于代码重构的一点感想
- 010SK: 数据库无法设置连接选项 SET_READONLY_TRUE
- 程序员编程艺术:第三章、寻找最小的k个数
- android下listview的优化和listview的异步加载全攻略(非常实用)
- MonkeyRunner_Android自动化测试之使用java调用monkeyrunner
- (4)第一个程序
- android中scrollview嵌套HorizontalScrollView导致横向滑动卡顿现象解决
- 程序员编程艺术:第三章续、Top K算法问题的实现
- Playback.PlaybackSettings Introduction
- HttpSessionBindingListener和HttpSessionAttributeListener区别
- 01. 第一个Windows程序设计
- 多文件的回文素数