我正在处理的应用程序将有很多图像(每个列表项都有图像的列表视图、带有图像的网格视图、图像库),因此在可绘制文件夹中的开发结束时将有大约 1000 个或更多图像。现在我在可绘制文件夹中有大约 200 张图像。
将所有图像放在可绘制文件夹中是正确的还是添加它们的最佳方式?
图像用于:
网格视图
每个 Gridview 项的 ListView
- 每个 listView 项目的图库
我正在处理的应用程序将有很多图像(每个列表项都有图像的列表视图、带有图像的网格视图、图像库),因此在可绘制文件夹中的开发结束时将有大约 1000 个或更多图像。现在我在可绘制文件夹中有大约 200 张图像。
将所有图像放在可绘制文件夹中是正确的还是添加它们的最佳方式?
图像用于:
网格视图
每个 Gridview 项的 ListView
您可以将图像存储在 SD 卡上。存储在资源文件夹中会增加应用程序的大小。
您的 apk 在 google play 上不能超过 50 MB 这里是扩展包的链接
http://support.google.com/googleplay/android-developer/answer/2481797?hl=en
如果您要处理大量图像,最好将它们保存在 assets 文件夹中。
drawable 文件夹用于存储图标和背景,在某些情况下您没有很多图像,i 可用于存储列表和网格的图像。这是因为可绘制对象上的图像已预先加载到内存中,因此如果您有很多高分辨率图像,它们可能会占用设备的所有 RAM 内存。
另一方面,assets 文件夹非常适合这种情况,因为图像存储为原始图像,当您想要使用它们时,您必须将它们构建为位图,因此您负责构建它们并在您使用它们时使用它们需要他们。
将图像存储在资产上还意味着您必须注意内存消耗,因为如果您加载包含大量高分辨率图像的列表或网格,无论如何您都会填满内存。我建议使用持有人制作您的列表和网格,因此只要项目未显示在屏幕上,它就不会存储在 ram 上。
如果您需要同时在屏幕上显示多个高分辨率图像,我建议使用 BitmapFactory.options.inSampleSize 构建它们。这允许您将大小参数传递给您将要构建的位图,因此您不会构建一个与将要存储它的容器的大小相比太大的位图
Image from Resources loading faster (simply by ID).
But if you store 1000+ images, your app will be huge.
So my advice: keep images as zip on some web server, after user first install your app, you should download and unzip it to SD card folder.