我有一个ViewPager,我用它来浏览几个ImageViews(大约1000个),每个ImageView加载一个全屏Bitmap。我正在使用options.inSampleSize
对图像进行二次采样,并使用内存缓存来提高性能,但这仍然不够快。我试图避免的是用户在快速浏览视图时看到空白的ImageView。
我想知道在请求的图片加载时是否有办法提供部分渲染的图像(或低质量)。
我注意到Android画廊包含了这样的内容(在放大和缩小时特别明显,加载看起来类似于在网络上加载渐进式JPEG),但我无法找到任何相关信息。
答案 0 :(得分:0)
Android目前不提供在解码过程中获取中间图像的方法(例如渐进式JPEG)。你只能得到一张最终图像。
您已经在使用inSampleSize来获取更粗略的图像版本。这使得解码希望更快,虽然没有时间保证:它使用libjpeg。您是否测量了每次图像解码所需的时间?您是否尝试将inPreferQualityOverSpeed设置为false?您是否重复使用相同的位图(也可能加快解码速度)。您还可以检查inSampleSize是否使速度不同。
在任何情况下,如果您想要更详细的同一图像版本,任何获得低质量图像的工作都会很快丢失,因为您必须从头开始解码。因此,您希望将解码限制为可见图像及其近邻,以便您可以滚动而不显示空白图像。