zoukankan      html  css  js  c++  java
  • Android LazyList 从网络获取图片并缓存

    原演示地址

    本文内容

    • 环境
    • 演示 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

    图 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_副本

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

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

    android_custom_listview_副本_副本

    图 3 网络获取音乐列表

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

    参考资料


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

    下载 LazyList Demo

    下载 LazyList Demo v.1.1

    下载 CompleteLazyList Demo

    下载 CompleteLazyList Demo v.2.0

  • 相关阅读:
    jquery的全选,全不选,反选
    jquery中的on方法绑定动态元素
    IIS服务器不能下载.apk文件的解决方略
    14:堆和堆排序
    虚拟内存
    leetcode28:实现strStr()
    leetcode387:字符串中的第一个唯一字符
    leetcode344:反转字符串
    leetcode198:打家劫舍
    leetcode64:最小路径和
  • 原文地址:https://www.cnblogs.com/liuning8023/p/3817339.html
Copyright © 2011-2022 走看看