原演示地址

本文内容

  • 环境
  • 演示 LazyList 从网络获取图片并缓存
  • 参考资料

本文是 Github 上的一个演示,通过网络获取歌手专辑的缩略图,并显示在 ListView 控件中。该演示具备将缩略图缓存到手机外存的功能,所以叫“Lazy”,这样就不用每次都通过网络重新获取。在学习这个演示前,希望你对 Android 的 Adpater 相关有一定的了解。

该演示仅仅是获得缩略图,但在另一篇文章中,另一个作者根据这个 LazyList,又做了一个相对完整的演示(包括歌曲名称、歌手名、时长、缩略图等信息),像图 3 所示。

环境


  • Windows 2008 R2 64 位
  • Eclipse ADT V22.6.2,Android 4.4.3
  • 三星 SM-G3508,Android OS 4.1

演示 LazyList 从网络获取图片并缓存


Github上的演示只有一个 Java 包,但我重新划分了一下,便于理解作者的思路。源代码就不贴了,你点击此处下载。

图 1 项目结构

  • com.fedorvlasov.lazylist.activity 包是主程序。
  • com.fedorvlasov.lazylist.cache 包,负责缓存,包括缓存在外存 FileCache 类和内存 MemoryCache 类。
  • com.fedorvlasov.lazylist.utils 包,负责流操作。
  • com.fedorvlasov.lazylist.view 包,负责从网络获取歌手专辑的缩略图,并在 ListView 显示,同时对缩略图进行缓存。如果缩略图已缓存,则 ListView 从缓存获取并显示,否则,从网络获取。 核心部分是,LazyAdapter 类,它继承 BaseAdapter,返回 View,即 ListView 中的每行;ImageLoader 类,负责从网络获得缩略图。

图 2 左:主程序,从网络获得缩略图;右:点击“Clear Cache”清除缓存重新加载

如图 2 左边所示,是主程序,从网络获得缩略图并显示。当点击“Clear Cache”按钮后,程序会清除缓存,重新加载并显示缩略图,如图 2 右边所示,有显示出歌手缩略图的,还有没显示出的,没有显示出来的,是正在从网络获取~

图 3 网络获取音乐列表

这是另一个相对完整的演示,点击此处下载,这个演示是在 LazyList 基础完成的,但有 bug,程序不太稳定,程序的运行不是每次都能显示出列表,即便显示出来,缩略图却显示不出来,还没搞清楚是怎么回事(老外写的东西,有时也不太靠谱),其中一个 bug 是因为版本较低,而 Android 4.0 以上的版本不允许在主线程访问网络,你可以试试,要是弄明白了,麻烦您告诉我一下~

参考资料


  • Github LazyList
  • androidhive android-custom-listview-with-imgae-and-text
  • androidhive android android-custom-listview-with-image-and-text 译文

这三个链接的关系是,第二个链接的演示是根据第一个链接完成的,第三个链接翻译的第二个链接。

下载 LazyList Demo

下载 LazyList Demo v.1.1

下载 CompleteLazyList Demo

下载 CompleteLazyList Demo v.2.0

更多相关文章

  1. Android(安卓)使用sharedpreferences、ACache缓存用户名和密码
  2. Android使用VideoView播放网络视频,获取网络视频缩略图
  3. android OkHttp3.0
  4. android volley 框架图片请求后有时会导致第一次初始化过慢的原
  5. Android(安卓)(ImageLoader、Fresco、Gilde)三大图片缓存原理、缓
  6. Android的图片缓存ImageCache
  7. Android(安卓)ListView工作原理完全解析,带你从源码的角度彻底理
  8. android存放本地数据
  9. 毕加索的艺术——Picasso,一个强大的Android图片下载缓存库,OkHtt

随机推荐

  1. Andorid TabHost 使用小结
  2. android 平台开机自动重启
  3. 【Android学习笔记1】Android(安卓)Studi
  4. android基础6——设置圆角按钮
  5. 从setContentView说起
  6. Android启动过程 && Activity的生命周期
  7. Android(安卓)开发 短信app
  8. Android(安卓)Annotations+Retrofit+Rxja
  9. Android(安卓)Toast用法
  10. android 睡眠和唤醒过程