我有一堆图像显示在列表视图中(每行一个)。我拥有的图像文件是一个非常大的分辨率,所以我需要将其缩小以显示在列表视图中。
所以,我的问题是......存储两个图像(一个常规图像和一个缩略图)的速度更快,因此无需动态调整任何内容,或者只是允许android在创建列表时缩放这个较大的图像更快?
谢谢! 尼克
答案 0 :(得分:1)
存储两张图片,以避免用户不得不等待获取每张图片的全尺寸,即使他们所看到的都是缩略图,除非图片与应用捆绑在一起(即不是动态下载)
答案 1 :(得分:1)
最佳方法取决于您的特定用例。如果你真的想要将图像大小调整为缩略图级别(例如150x150)并且不打算要显示超过30个图像,那么最好的办法就是将比特图的缓存保留在内存中而不用将它们写入磁盘(30张图像的内存成本约为3 MB)。这样,当您将图像滚入和滚出屏幕时,ListView不会出现断断续续的情况。您当然可以保留完整版本并显示当用户点击ListView项目时。
如果要在ListView中显示更高分辨率的版本,则可能必须具有创造性。请记住,您没有太多时间渲染每个单独的ListView单元以保持平滑的滚动体验,并且解码大图像文件需要花费时间,即使您正在对其进行下采样并调整其大小;初始解码时间是一样的,唯一的区别是内存大小。在这种情况下,将原始版本和较小尺寸的版本保存在磁盘中可能会很方便,以便在滚动时减少卡顿。