我正在使用ListView来显示与这些图像相关的一些图像和标题。我正在从互联网上获取图像。是否有一种方法可以延迟加载图像,以便在文本显示时,UI不会被阻止,图像在下载时显示?
图像总数不是固定的。
我正在使用ListView来显示与这些图像相关的一些图像和标题。我正在从互联网上获取图像。是否有一种方法可以延迟加载图像,以便在文本显示时,UI不会被阻止,图像在下载时显示?
图像总数不是固定的。
当前回答
DroidParts的ImageFetcher需要零配置才能启动。
使用磁盘和内存中最近最少使用(LRU)缓存。高效解码图像。支持在后台线程中修改位图。具有简单的交叉褪色。具有图像加载进度回调。
例如,克隆DroidPartsGram:
其他回答
我建议使用开源仪器Universal Image Loader。它最初基于Fedor Vlasov的项目LazyList,此后得到了极大的改进。
多线程图像加载可以广泛调整ImageLoader的配置(线程执行器、下载器、解码器、内存和磁盘缓存、显示图像选项等)可以在内存和/或设备的文件系统(或SD卡)中缓存图像“聆听”加载过程的可能性可以使用单独的选项自定义每个显示图像通话小工具支持Android 2.0+支持
您可以使用一些第三方库(如Piccaso或Volley)进行有效的延迟加载。您还可以通过实现以下内容创建自己的
用于从url下载图像的实现代码实现用于存储和检索图像的缓存机制(使用android的LruCache进行缓存)
URLImageViewHelper是一个非常棒的库,可以帮助您做到这一点。
我认为这个问题在Android开发人员中非常流行,有很多这样的库声称可以解决这个问题,但似乎只有少数库是正确的。AQuery就是一个这样的图书馆,但它在所有方面都比大多数图书馆好,值得一试。
滑行
Glide是一个快速高效的Android开源媒体管理框架,它将媒体解码、内存和磁盘缓存以及资源池打包成一个简单易用的界面。
Glide支持获取、解码和显示视频剧照、图像和动画GIF。Glide包含一个灵活的API,允许开发人员插入几乎任何网络堆栈。默认情况下,Glide使用一个基于HttpUrlConnection的自定义堆栈,但也包括Google的Volley项目或Square的OkHttp库的实用程序库插件。
Glide.with(this).load("your-url-here").into(imageView);
Glide的主要关注点是尽可能平滑快速地滚动任何类型的图像列表,但Glide对于任何需要获取、调整大小和显示远程图像的情况都非常有效。
Glide库
毕加索
使用杰克·沃顿的毕加索图书馆。(ActionBarSherlock开发人员提供的完美图像加载库)
一个强大的Android图像下载和缓存库。
图像为Android应用程序添加了急需的上下文和视觉效果。Picasso允许在应用程序中轻松加载图像,通常只需一行代码!
Picasso.with(context).load("your-url-here").into(imageView);
在Android上加载图像的许多常见陷阱都由毕加索自动处理:
在适配器中处理ImageView回收和下载取消。使用最少内存的复杂图像转换。自动内存和磁盘缓存。
毕加索图书馆