尽量少加载大图像

时间:2013-03-22 12:18:45

标签: android listview optimization

我的服务器中有高质量,丰富的彩色图像。我在{Image}中的ListView中显示它们。在用户选择项目之后,他获得所选图像的全屏。以这种方式选择图像后,图像加载速度很快,因为它已经加载,我将它们保存在缓存中。

问题是第一次启动时整个List加载速度很慢,因为每个项目都需要下载。有没有什么方法可以减少ListView中的图像加载?在我的视野中,ListView应该非常快速地加载,并且在选择之后图像可能加载更长时间。我知道我可以通过从服务器到列表传递低质量,调整大小的图像来优化这一点。选择后通过高质量的图像网址。但这是一项非常重要的工作,因为我有大量的图像并且调整其中的每一个都会很痛苦。

任何想法我怎么能优化这一点呢?

更新:我想我的问题不够明确。 ListView或图像加载没有问题。我不会在某个“加载”屏幕上挂起用户,我会异步加载图像,并且我会在ListView中为每个项目加载图像。但由于互联网连接速度慢,缩略图只能在那里停留太久,我认为用户只会退出应用...我正在寻找一种优化加载过程的方法。加载刚刚调整大小的图像会很棒,例如:ListView为50kb,SelectedView为fullsize。我认为用户体验会更好。

2 个答案:

答案 0 :(得分:1)

https://github.com/nostra13/Android-Universal-Image-Loader。 Universal Image Loader是Asynchronous,使用缓存,是LazyLoading的改进版本。

您可以将图像缓存在内存或光盘中。您还可以提供自定义文件夹来缓存图像。 Universal Image Loader还为您提供其他配置选项。

https://github.com/thest1/LazyList。你也可以使用延迟加载。

对于性能和平滑滚动,请使用ViewHolder。http://developer.android.com/training/improving-layouts/smooth-scrolling.html

http://www.youtube.com/watch?v=wDBM6wVEO70。关于列表视图的View Holder的讨论。

答案 1 :(得分:0)

您可以使用universal image loader。它使您可以在后台线程上下载图像。基本上,您使用一些默认缩略图显示ListView,当下载每个图像时,UIL会用真实图像替换缩略图。

这样,用户在下载图像时不会被困,但显示所有缩略图肯定需要下载所有大图像,直到您开始为图像提供小变体。