Android LazyList 从网络获取图片并缓存

原文地址

 

本文内容

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

本文是 Github 上的一个演示,通过网络获取歌手专辑的缩略图,并显示在 ListView 控件中。该演示具备将缩略图缓存到手机外存的功能,所以叫“Lazy”,这样就不用每次都通过网络重新获取。

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

环境


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

 

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



Github上的演示只有一个 Java 包,但我重新划分了一下,便于理解作者的思路。在此出下载。

图 1 项目结构

  • com.fedorvlasov.lazylist.activity 包是主程序。
  • com.fedorvlasov.lazylist.cache 包,负责缓存,包括缓存在外存和内存。
  • com.fedorvlasov.lazylist.utils 包,负责流操作。
  • com.fedorvlasov.lazylist.view 包,负责从网络获取歌手专辑的缩略图,并在 ListView 显示,同时对缩略图进行缓存。如果缩略图已缓存,则 ListView 从缓存获取并显示,否则,从网络获取。

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

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

图 3 网络获取音乐列表

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

 

参考资料


 

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

 

下载 Demo

下载 Demo

Android LazyList 从网络获取图片并缓存

时间: 2024-10-25 14:34:37

Android LazyList 从网络获取图片并缓存的相关文章

Android ListView从网络获取图片及文字显示

从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析,最后显示在ListView上.具体步骤: 客户端发出请求,获取xml 客户端异步解析xml ListView将解析完的数据显示 一.Android客户端 (1)xml布局文件         mainxml,就是一个ListView. [java] view plaincopy <?xml version="1.0" encoding="utf

如何实现从网络获取图片的缓存机制

前言 在iOS开发中从网络加载图片是一个比较值得思考的问题,因为你要考虑用户的体验,这其实包括流畅度,以及用户的流量考虑,那么今天我就来简单的说点这方面知识. 具体实现: 说到缓存就可以分为内存缓存和沙盒缓存,内存缓存的话就是用简单的用一个字典来记录下载的图片. 今天的环境就是从网络下载一些图片给tableview的imageView的image赋值,SAMApp是模型类,icon是url. 1.定义几个属性,具体如下 /** 所有数据 */ @property (nonatomic, stro

android从网络获取图片

http://blog.csdn.net/wangjinyu501/article/details/8219317 http://www.cnblogs.com/JerryWang1991/archive/2012/03/09/2388312.html http://blog.csdn.net/liuhe688/article/details/6532519 http://blog.csdn.net/abc5382334/article/details/17097633 http://www.t

Android 通过网络获取图片的源码

将开发过程中经常用到的内容做个备份,如下的资料是关于Android 通过网络获取图片的的内容. package com.netimg; import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.view.View;import android.view.View.OnClickLis

android 调用系统相机获取图片、调用系统相册获取图片,并对图片进行截取

打开系统相册获取图片并截取,代码相对简单 1 Intent intent = new Intent(Intent.ACTION_GET_CONTENT,null); 2 intent.setType("image/*"); 3 intent.putExtra("crop", "true"); 4 5 //WIDTH 和 HEIGHT指的是截取框的宽高比例,如设WIDTH = 1,HEIGHT = 1,截取框就为正方形 6 intent.putEx

Android从相册中获取图片以及路径

首先是相册图片的获取: private final String IMAGE_TYPE = "image/*"; private final int IMAGE_CODE = 0;   //这里的IMAGE_CODE是自己任意定义的 //使用intent调用系统提供的相册功能,使用startActivityForResult是为了获取用户选择的图片 Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT); getAlbum.set

android ViewPager实现的轮播图广告自定义视图,网络获取图片和数据

public class SlideShowAdView extends FrameLayout { //轮播图图片数量    private static int IMAGE_COUNT = 3;    //自动轮播的时间间隔    private final static int TIME_INTERVAL = 5;    //自动轮播启用开关    private final static boolean isAutoPlay = false;       //自定义轮播图的资源ID   

基于Android4.0ListView从网络获取图片文字资源显示

平时的一些Android学习视频中,他们都是基于Android的去使用ListView,我看到都是会在UI线程中去访问网络获取数据,但是这在Android4.0之后是行不通的. 首先我们来理一下思绪: 我们需要从网络上下载一份xml数据,里面包含了需要显示的文字和图片路径.所以我们首先需要的就是先去下载数据,下载数据完成之后再在Adapter中显示图片的时候去下载图片,然后显示出来.这是基本的思路.但是做着做着会发现一些问题,比如,我们如何能保证数据下载完全,才去绑定适配器和数据他们.然后假如我

Android中高效的显示图片之三——缓存图片

加载一张图片到UI相对比较简单,如果一次要加载一组图片,就会变得麻烦很多.像ListView,GridView,ViewPager等控件,需要显示的图片和将要显示的图片数量可能会很大. 为了减少内存使用,这类控件都重复利用移出屏幕的子视图,如果你没有持用引用,垃圾回收器也会回收你加载过的图片.这种做法很好,但是如果想要图片加载快速流畅且不想当控件拖回来时重新运算获取加载过的图片,通常会使用内存和磁盘缓存.这节主要介绍当加载多张图片时利用内存缓存和磁盘缓存使加载图片时更快. 一.使用内存缓存 内存