0

我正在构建一个简单的壁纸应用程序。我将壁纸图像(.jpg)作为资源存储在 res 文件夹中。我向用户展示了一个缩略图网格,我也将其作为资源(.jpg)单独存储在 res 中。我希望通过此网格的滚动流畅且快速。我的问题是,当我使用适配器加载 gridview 时,在 getView 方法中,我将资源转换为位图,然后将其加载到 Grid 中的每个 imageView 中。如果我首先将缩略图作为 .bmp 存储在 res 文件夹中会更快吗?此外,我手动创建了缩略图,而不是在运行时操纵大型壁纸制作它们。每个缩略图都缩放到 120 像素的宽度,网格由 120x120 的图像视图组成。所以我想知道如何快速有效地加载这些图像?我将适配器设置为 Asyntask 内的 gridview,但我没有注意到改进。

4

2 回答 2

2

Jpeg 是有损图像压缩,通常提供最佳质量与大小的权衡。如果您尝试存储高质量的图像,那么您几乎肯定会想要使用 Jpeg。

PNG确实具有有用的功能,例如允许您使用透明度,并且对于简单的块彩色图像输出非常小的文件大小。

但是,当您开始创建照片质量的图像(例如壁纸、PNG)时,您将看到巨大的文件大小,这在移动设备上不会很有趣或最终用户不会很欣赏。此外,较大的文件往往需要更多的系统资源(CPU 时间和 RAM),而在移动设备上,这些资源非常宝贵。

我建议您可能使用 PNG 来生成缩略图,而对于完整尺寸的图像使用 JPEG,但您可能会很好地查看创建最小文件的文件,因为这可能会很好地表明渲染效率,即它需要渲染 800b PNG 的资源很少。

于 2012-09-23T11:18:07.690 回答
1

将图像更改为 bmp 文件格式可能会稍微提高性能(因为 JPG 是压缩的位图图像,在渲染时需要解压缩),但通常不值得大幅增加文件大小。

我建议使用 PNG 位图格式,因为它在渲染和文件大小方面都很轻。

至于 ListView 中的渲染,你可能想看看这个问题和这个代码项目。

于 2012-09-23T11:16:10.063 回答