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