2016-02-04 75 views
0

我目前正在创建一个应用程序,它可以容纳几百张图像,准确地说是445个.png文件,共19.7MB。我正在使用回收器视图和卡片视图来显示每个图像。存储大量图像android

是否将所有这些图像存储在可绘制文件夹中是执行此操作的最佳方法?另外,如果我将它们存储在可绘制文件夹中,一旦完成后这些图像将很容易从应用程序中提取出来?当我为创建图像付出相当大的努力时,有一点安全感会很好。

+0

提取很容易,如苹果派。 Apk只是一个zip压缩文件,因此您可以在没有任何问题的情况下提取其内容。 – aelimill

+0

这样做会更安全吗? @aelimill – M0rty

+0

这实际上取决于这些资产(图片)是什么类型,它们对用户/应用程序/视图的重要性。将它们保存在外部服务器上也会很麻烦,特别是这样做会花费用户带宽。如果需要在不同的设备类型上缩放资源,将它们放在可绘制文件夹中将是最好的(20MB不是很多),否则将它们存储在资产文件夹中,存档并以优化的方式访问它。另外,你可以使用像毕加索这样的库来加载它们。 – anthonymonori

回答

0

这对普通用户来说并不容易,但它可以获得这些图像。你应该加密你想保护的文件。在apk中建立加密文件将其放入assets文件夹中。
要显示RecyclerView中的所有图像,只有在用户看到它时才可以异步加载它们。如果您显示缩略图,那么只需在用户首次启动程序时或用户使用它时加载这些图像,并将这些缩略图全部加载到下一次列出。
虽然,对于445个图像,它会更好地异步加载它。作为优化,当用户停在列表中的某个项目上时,可以加载某些图像部分。例如:列表显示5个项目,那么你的适配器必须加载1 - 20个图像,它需要一点点内存。

+0

你能给我一个例子,说明我可以如何异步做到这一点? @ghostman – M0rty

+0

是的,当然,现在,等一下。 –

+0

[示例](http://developer.android.com/intl/ru/training/displaying-bitmaps/process-bitmap.html)只有您自己需要更改背景加载。并在您的自定义适配器中使用它之后。当“ImageView”不可见时,只需要将侦听器添加到空闲图像。 –

1

至于我的答案是非常明显的 - 最好的办法是将所有需要的图像保存在外面的某个地方(在服务器上)。对于加载图像,我建议使用毕加索 - 这非常简单,并且具有开箱即用的缓存功能,您可以以任何您想要的方式对其进行自定义。只需要两个步骤 - 将图像上传到服务器并在需要时请求它们。