我们可以在 Xamarin 共享项目中将多个分辨率图像作为嵌入文件吗?

Posted

技术标签:

【中文标题】我们可以在 Xamarin 共享项目中将多个分辨率图像作为嵌入文件吗?【英文标题】:Can we have Multiple Resolution Images as Embedded Files in Xamarin Shared Project? 【发布时间】:2022-01-07 11:42:25 【问题描述】:

在我的应用程序中,我有一堆图像,我目前在我的 Xamarin 共享项目中引用它们。例如,我有以下代码:

<Image x:Name="imgAddNewProject" HeightRequest="30" WidthRequest="30" Source="imgres:ImageResource FoodApp.Images.addnew.png"/>

图像文件位于共享项目的图像文件夹中。除了图像在低分辨率环境中呈锯齿状之外,所有这些都可以正常工作。而不是一个名为 addew.png 的图像,我可以使用以下内容:

addnew.scale-100.png
addnew.scale-125.png
addnew.scale-150.png
addnew.scale-200.png
addnew.scale.400.png

这意味着平台将在运行时选择具有正确分辨率的图像。当我参考平台特定代码中的图像时,我知道这很有效。例如在 UWP 项目的 assets 文件夹或 android 项目的 assets\drawable 文件夹中。我更喜欢将所有图像都放在共享项目中,但要考虑多种屏幕分辨率。

我们将不胜感激。

【问题讨论】:

Android 和 ios 具有选择正确分辨率图像的本机能力,前提是图像以正确的命名方案存储在默认位置。如果您将它们存储在备用位置或使用不同的命名方案(这是您尝试做的),这将不起作用 【参考方案1】:

如果我们要使用多分辨率图像,则需要将图像文件添加到每个平台。

要在所有应用中使用单个图像,必须在每个平台上使用相同的文件名,并且它应该是有效的 Android 资源名称(即只允许使用小写字母、数字、下划线和句点)。

iOS - 自 iOS 9 以来管理和支持图像的首选方式是使用资产目录图像集,其中应包含支持各种设备和缩放因子所需的所有图像版本应用。有关详细信息,请参阅将图像添加到资产目录图像集。 Android - 使用 Build Action: AndroidResource 将图像放置在 Resources/drawable 目录中。还可以提供图像的高 DPI 和低 DPI 版本(在适当命名的资源子目录中,例如 drawable-ldpi、drawable-hdpi 和 drawable-xhdpi).i)。

有关详细信息,请查看 MS 文档。 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/images?tabs=windows#local-images

【讨论】:

以上是关于我们可以在 Xamarin 共享项目中将多个分辨率图像作为嵌入文件吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 xamarin 表单共享项目中检查 Internet 连接

无法在 Xamarin iOS 应用程序中将文本共享到电子邮件或短信中

如何一次在一个解决方案中编写多个项目中的代码? [Visual Studio / Xamarin]

Xamarin 共享项目或添加为链接?

如何使用 Xamarin 在设备之间共享用户首选项

Xamarin.Forms 在共享项目中设置图像源