为什么选择一个而不是另一个?它们是如何存储在手机上的?
由于
答案 0 :(得分:3)
有了资源,内置支持为不同语言,操作系统版本,屏幕方向等提供替代方案,如here所述。这些都不适用于资产。此外,API的许多部分都支持使用资源标识符。最后,资源的名称将转换为在编译时检查的常量字段名称,因此代码和资源本身之间的不匹配机会就会减少。这些都不适用于资产。
那为什么要有资产文件夹?如果要计算要在运行时使用的资产,则非常简单。使用资源,您必须声明可能使用的所有资源ID的列表,并在列表中计算索引。 (如果资源集在开发周期中发生变化,这有点尴尬并且会引入错误机会。)您可以使用getIdentifier
按名称检索资源ID,但这会失去编译时检查的好处。资产也可以组织到文件夹层次结构中,资源不支持。这是一种管理数据的不同方式。虽然资源涵盖了大多数情况,但资产偶尔会被使用。
另一个不同之处:库项目中定义的资源会自动导入依赖于库的应用程序项目。对于资产,这不会发生;资产文件必须存在于应用程序项目的assets目录中。