我应该以什么格式保留应用程序的资源图像?

时间:2012-09-23 11:01:24

标签: android gridview bitmap adapter

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

2 个答案:

答案 0 :(得分:2)

Jpeg,这是一种有损图像压缩,通常可以提供最佳质量的尺寸权衡。 如果你试图存储高质量的图像,那么你几乎肯定会想要使用Jpeg。

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

然而,当你开始创建照片质量的图像,如壁纸,作为PNG,你将看到怪物文件大小,这在移动设备上不会有太多乐趣或最终欣赏用户。 更大的文件往往需要更多的系统资源(CPU时间和RAM),而在移动设备上,这些资源非常宝贵。

我建议也许对于缩略图你可能会使用PNG,而对于全尺寸图像使用JPEG,但你可能会看到哪个创建最小的文件,因为这可能很好地表明渲染效率即,渲染800b PNG只需要很少的资源。

答案 1 :(得分:1)

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

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

对于ListView中的渲染,您可能需要查看this问题和this代码项目。