1

我有一个 ViewPager,我用它来浏览几个 ImageView(大约 1000 个),每个 ImageView 加载一个全屏位图。我正在使用options.inSampleSize和使用内存缓存对图像进行二次采样以提高性能,但这仍然不够快。我要避免的是用户在快速翻阅视图时看到空白的 ImageView。

我想知道是否有办法在请求的图像加载时提供部分渲染的图像(或低质量)。

我注意到 Android 图库包含类似的内容(在放大和缩小时尤其明显,加载看起来类似于在网络上加载渐进式 JPEG),但我无法找到任何相关信息。

4

1 回答 1

0

Android 目前不提供在解码期间获取中间图像的方法(例如渐进式 JPEG)。您只会得到一张最终图像。

您已经在使用 inSampleSize 来获取更粗略的图像版本。这使得解码有望更快,尽管没有时间保证:它在引擎盖下使用 libjpeg。您是否测量过每个图像解码需要多长时间?您是否尝试将 inPreferQualityOverSpeed 设置为 false?您是否重复使用相同的位图(也可能加快解码速度)。您还可以检查 inSampleSize 是否在速度上有所不同。

无论如何,如果您想要同一图像的更详细版本,那么任何获取低质量图像的工作都会很快丢失,因为您必须从头开始解码。因此,您希望将解码限制为可见图像及其近邻,这样您就可以在没有空白图像的情况下滚动。

于 2014-04-08T22:03:16.917 回答