Xamarin 资产与资源可绘制

Posted

技术标签:

【中文标题】Xamarin 资产与资源可绘制【英文标题】:Xamarin Assets vs Resources drawable 【发布时间】:2018-02-27 11:03:44 【问题描述】:

在 Xamarin(本机或表单)中,我看到 android 项目始终具有 Assets 和 Resources/drawable 文件夹。

如果我在应用程序的 ListView、工具栏等中使用各种图像,我会将这些图像放在哪里?

而且,我为什么要将它们放入 Assets 文件夹中?

【问题讨论】:

【参考方案1】:

这个问题只针对Xamarin.Android

如here 所述,通过资源,内置支持为不同语言、操作系统版本、屏幕方向等提供替代方案。这些都不适用于资产。此外,API 的许多部分都支持使用资源标识符。最后,资源的名称被转换为在编译时检查的常量字段名称,因此代码和资源本身之间不匹配的机会更少。这些都不适用于资产。

那么,为什么还要有资产文件夹呢?如果你想计算你想在运行时使用的资产,这很容易。对于资源,您必须声明可能使用的所有资源 ID 的列表,并计算列表中的索引。 (如果资源集在开发周期中发生变化,这有点尴尬,并且会引入错误机会。)(您可以使用 getIdentifier 按名称检索资源 ID,但这失去了编译时检查的好处。)也可以组织成文件夹层次结构,资源不支持。这是一种不同的数据管理方式。尽管资源涵盖了大多数情况,但资产也有其偶尔的用途。

另一个区别:在库项目中定义的资源会自动导入到依赖于库的应用程序项目中。对于资产,这不会发生;资产文件必须存在于应用程序项目的资产目录中。使用 Android 的新 Gradle-based build system(与 Android Studio 一起使用),这不再是真的。库项目的资产目录被打包到 .aar 文件中,因此库项目中定义的资产被合并到应用程序项目中(因此,如果它们在引用的库中,则它们不必存在于应用程序的 /assets 目录中)。

【讨论】:

以上是关于Xamarin 资产与资源可绘制的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Essentials 共享可绘制对象

使用 Jetbrain Rider 时如何在 Xamarin 中添加图像?

Xamarin Android 圆角边框与彩色 ImageView

如何在 Xamarin.iOS 中绘制圆角矩形?

应用程序的 Xamarin UWP 图标资产

Xamarin 表单:资源字符串