2017-08-03 56 views
0

我们有许多图像用作应用资产,为了简单起见,我们只说10张图片。我知道,Xamarin.Forms不会将这些图像放在一起,所以如果我的工具栏中显示了这10个图像(这只是为了解释问题,我们不会真的把10个图像放在一个小工具栏中)并且我有5个页面显示相同的工具栏,这意味着10个图像将每5次加载一次,导致总共加载50个图像。我只想加载10张图片,而不是加载5张图片×10图片= 50张图片。此外,如果我必须将这10张图片添加到我们的存储库中,我将不得不在我们的存储库中添加至少3个相同图像的副本(Android 1,IOS 1,UWP 1)。这导致存储库中有30个图像,但实际上我只需要10个。因此,这两个问题让我相信应该有一个更好的跨平台解决方案,以便我可以在所有3个平台上共享相同的图像,只有一个所有3个平台(Android,IOS,UWP)使用的图像,并且无论我在UI中展示多少次,我都只在内存中加载一次图像。Xamarin.Forms图像缓存跨平台解决方案

回答

2

你可以看看支持缓存的FFImageLoading。有图像共享代码,而不是你的平台特定的代码,你可以看看嵌入图像:

嵌入图像也随应用程序(如本地图片),但是,而不必在图像的副本每个应用程序的文件结构都将图像文件作为资源嵌入程序集中。这种分发图像的方法特别适合创建组件,因为图像与代码捆绑在一起。

https://developer.xamarin.com/guides/xamarin-forms/user-interface/images/#Embedded_Images

请记住,虽然每个平台,添加图像是不是一件坏事。由于不同的像素密度等,每个平台都有自己的图像版本,以便在每个平台上看起来不错,您可能需要考虑平台特定的路线。

另一种替代方法是将图像添加为每个平台特定文件中的文件链接图像。图像文件本身可以保存在一个位置,并以文件形式链接到每个平台的正确目录中。

+0

非常感谢史蒂文 – pixel