我找不到任何可信的来源来解释LazyList是什么。有人知道吗?
懒加载列表是从SD卡或服务器使用URL懒加载图像。它就像按需加载图像一样。
图像可以缓存到本地SD卡或手机内存中。 URL被视为键。如果键存在于SD卡中,则从SD卡显示图像,否则它会从服务器下载图像并将其缓存到您选择的位置。您可以设置缓存限制。您也可以选择自己的位置来缓存图像。缓存也可以清除。
懒加载列表在用户等待下载大型图像并显示它们的过程中,可以按需加载图像。由于图像被缓存,您可以离线显示图像。
https://github.com/thest1/LazyList. 懒加载列表。
在您的getview中
imageLoader.DisplayImage(imageurl, imageview);
ImageLoader显示方法
public void DisplayImage(String url, ImageView imageView) //url and imageview as parameters
{
imageViews.put(imageView, url);
Bitmap bitmap=memoryCache.get(url); //get image from cache using url as key
if(bitmap!=null) //if image exists
imageView.setImageBitmap(bitmap); //display iamge
else //downlaod image and dispaly. add to cache.
{
queuePhoto(url, imageView);
imageView.setImageResource(stub_id);
}
}
替代Lazy List的方案是Universal Image Loader
https://github.com/nostra13/Android-Universal-Image-Loader。它基于Lazy List(使用相同的原理),但具有许多其他配置选项。我更喜欢使用Universal Image Loader,因为它提供了更多的配置选项。它可以在下载失败时显示错误图像。 它可以显示带圆角的图像。它可以在磁盘或内存中缓存。它可以压缩图像。
在您的自定义适配器构造函数中
File cacheDir = StorageUtils.getOwnCacheDirectory(a, "your folder");
// Get singletone instance of ImageLoader
imageLoader = ImageLoader.getInstance();
// Create configuration for ImageLoader (all options are optional)
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(a)
// You can pass your own memory cache implementation
.discCache(new UnlimitedDiscCache(cacheDir)) // You can pass your own disc cache implementation
.discCacheFileNameGenerator(new HashCodeFileNameGenerator())
.enableLogging()
.build();
// Initialize ImageLoader with created configuration. Do it once.
imageLoader.init(config);
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.stub_id)//display stub image
.cacheInMemory()
.cacheOnDisc()
.displayer(new RoundedBitmapDisplayer(20))
.build();
在你的getView()方法中
ImageView image=(ImageView)vi.findViewById(R.id.imageview);
imageLoader.displayImage(imageurl, image,options);//provide imageurl, imageview and options
您可以使用其他选项配置Universal Image Loader以满足您的需求。
除了LazyList / Universal Image Loader之外,您还可以查看此网站,以实现平滑滚动和性能。 http://developer.android.com/training/improving-layouts/smooth-scrolling.html.