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