在 Xamarin( native 或表单)中,我看到 Android 项目始终具有 Assets 和 Resources/drawable 文件夹。
如果我在应用程序的 ListView、工具栏等中使用各种图像,我会将这些图像放在哪里?
而且,为什么我要把它们放入 Assets 文件夹中?
最佳答案
这只是针对 Xamarin.Android
的问题
通过资源,可以提供内置支持,为不同语言、操作系统版本、屏幕方向等提供替代方案,如 here 中所述。 。这些都不适用于 Assets 。此外,API 的许多部分都支持资源标识符的使用。最后,资源名称将转换为在编译时检查的常量字段名称,因此代码与资源本身之间不匹配的机会较少。这些都不适用于 Assets 。
那么为什么要有 Assets 文件夹呢?如果您想计算要在运行时使用的 Assets ,这非常简单。对于资源,您必须声明可能使用的所有资源 ID 的列表,并计算该列表的索引。 (如果资源集在开发周期中发生变化,这有点尴尬,并且会带来出错的机会。)(您可以使用 getIdentifier
按名称检索资源 ID,但这会失去编译时检查的好处。)也可以组织成文件夹层次结构,资源不支持这种结构。这是一种不同的数据管理方式。尽管资源涵盖了大多数情况,但 Assets 也有其偶尔的用途。
另一个区别:库项目中定义的资源会自动导入到依赖于该库的应用程序项目中。对于 Assets 来说,这种情况不会发生; Assets 文件必须存在于应用程序项目的 Assets 目录中。随着Android的新Gradle-based build system (与 Android Studio 一起使用),这不再是事实。库项目的资源目录被打包到 .aar 文件中,因此库项目中定义的资源将合并到应用程序项目中(因此,如果它们位于应用程序的 /assets
目录中,则它们不必存在于应用程序的 /assets
目录中)引用的库)。
关于Xamarin Assets 与可绘制资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46287258/