在 /assets 或 res/raw 中的 Android 图像

4
如果我想将一系列图像放在文件夹结构中,例如... 我正在开发一个海滩应用程序,并且每个海滩都通过我的海滩列表中选择的海滩显示在我的海滩详细信息活动中。然后,我想显示从该特定海滩获取的五张图像。每个海滩都将有一个名称与海滩的 _id 相对应的文件夹,然后在该文件夹中有五个图像,image1.jpg、image2.jpg... image5.jpg。为了最好/最容易的方式,我应该将文件夹和图像放在 /res/raw 文件夹还是 /assets 文件夹中?谢谢,Mike.
2个回答

7

Assets允许您创建子目录(将文件分组到目录中),请注意它们没有名称限制,但是只能通过包含list()用于列出给定目录下的文件和open()用于获取文件InputStream的Assets Manager进行访问。

相反,资源允许您访问文件夹中的文件,但是您无法创建子文件夹,此外,您必须将文件放在正确的位置,因此位图位于/res/drawable,布局xml位于/res/layout等。由于资源具有标识符,因此易于其他代码部分访问。 由于您希望使用res/raw文件夹,这意味着您无法在其中创建子文件夹,并且您的图像不会被压缩,因此将它们放置在未压缩状态并考虑到将有很多图像,那么您的应用程序将会有点沉重。

以下是两个可能对您有帮助的链接:WiseAndroid提供资源 - 开发人员指南


重的、精确的以及它们为什么是可选的。我可以选择通过网络在浏览器中查看它们,但大多数海滩没有互联网访问。我的/res/raw工作得很好,你可以像drawable一样访问它,R.raw.imagename,因为在R.java文件中有对它们的引用。我想对于这个应用程序,我只能使用raw文件夹来存储图像,但把它们放在资产中的一个更有结构的文件夹/文件方式中会更好,记住它们是可选下载的吗? - user903601
你可以使用raw文件夹,因为它更容易处理,但如果你真的需要将它们放在文件夹中,你将不得不使用assets。我建议使用raw文件夹。 - Raykud

0

在将图像添加到应用程序时,您应该将它们放置在“res/drawable”中。该文件夹用于存放不特定于任何dpi级别的图像。为了获得最佳效果,您应该拥有每个图像的三种尺寸,并将它们放置在各自的dpi文件夹中,例如“res/drawable-hdpi”用于高分辨率图像。是文档中一个很好的部分,可以阅读资源和设备兼容性。


2
我有97个海滩,每个海滩有5张图片,总共485张图片。我希望这些图片可以在应用程序安装后作为可选下载。然后,我想在应用程序中添加一个按钮,允许用户随时下载或更新这些图片,因此我认为将它们放在drawable文件夹中不是正确的选择。 - user903601
这里有一个问题;即使你使用'drawable'文件夹而不是'drawable-whateverDPI'文件夹,安卓仍会对图像进行一些自动调整/缩放。如果你正在绘制到SurfaceView并且正在尝试自己缩放东西,这真的会让你很困扰。 - MacD
1
不,drawable 相当于 drawable-mdpi,你不应该在那里放置大尺寸的图片,因为它们会在 hdpi 及以上被放大。你要找的文件夹是 drawable-nodpi - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接