Xamarin Assets 与可绘制资源

标签 xamarin xamarin.ios xamarin.forms xamarin.android xamarin.uwp

在 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/

相关文章:

c# - 如何在文本属性中放置不同的文本格式和超链接

android - 正确的配置更改处理

c# - 如何从代码 Xamarin 将 TextView 添加到 StackView?

Xamarin iOs 构建失败 : Storyboards

ios - Monotouch - UITableview Cell 空引用异常

xamarin.ios - xamarin VisualStudio for ios 中没有附加设备

c# - SQLite 未在 MonoDroid 和 MonoTouch 上正确存储 GUID 值

json - 使用 Rest Api 的 Xamarin 中的 ListView

c# - 通过 Xamarin 将视频上传到 Azure 存储

c# - 更快地插入sqlite3处理