2013-02-23 28 views
0

我正在使用的应用程序将包含大量图像(列表视图中每个列表项都有图像,网格图像和图像库),因此在可绘制文件夹的开发结束时将约1000或更多的图像。现在我在可绘制文件夹中有大约200张图片。关于图像的Android应用程序优化

将所有图像放在可绘制文件夹中,还是添加它们的最佳方式是正确的?

图像用于:

  • 的GridView

  • ListView的每个GridView的项目

  • 画廊每个ListView项
+0

你是指什么意思最优。阅读图像的速度,还是其他性能问题?在第一个例子中,我最关心的是旧手机的内存使用情况。 APK是一个zip文件,因此拥有大量小文件与一个大文件可能不会对阅读速度产生很大影响。 – 2013-02-23 10:48:43

+0

我不想在开发结束时觉醒应用程序运行不正常,即使在较新的手机上,因为在可绘制文件夹中有1000张图像 – 2013-02-23 11:17:42

+0

然后立即获取10000张图像并测试您的应用程序的性能(即使只是视图你在上面描述)在Galaxy Y或类似的! – 2013-02-23 11:43:59

回答

0

你可以存储在SD卡中的图像。存储在资源文件夹中会增加应用程序的大小。

0

如果你正在处理大量的图片,最好是让他们的资产文件夹。

可绘制的文件夹,是要用来存储图标和背景,在某些情况下,你没有很多图像,我可以用来存储列表和网格的图像。这是因为drawable上的图像被预加载到内存上,所以如果高分辨率中有很多图像,它们可能会消耗所有设备的内存。

另一方面,资产文件夹对于这种情况非常适用,因为图像存储为原始图像,当您想使用它们时,必须将它们构建为位图,因此您需要负责构建这些图像并在需要时使用它们。

在资产上存储图像也意味着您必须了解您的内存消耗,因为如果您使用大量高分辨率图像加载列表或网格,则无论如何都会填满您的内存。我建议使用持有者制作你的列表和网格,所以只要一个项目没有在屏幕上显示,它就不会存储在内存中。

如果您需要同时在屏幕上显示多个高分辨率图像,我建议使用BitmapFactory.options.inSampleSize构建它们。这使您可以将大小参数传递给您即将构建的位图,因此您不会构建与要存储容器的容器大小相比较大的位图

0

来自资源的图片加载更快(仅通过ID)。
但是,如果您存储1000多张图片,您的应用程序将会非常庞大​​。
所以我的建议是:在用户首次安装应用程序后,将图像保存为某些Web服务器上的zip文件,然后将其下载并解压缩到SD卡文件夹。