Xamarin.Forms 图片缓存跨平台解决方案
Xamarin.Forms Image Caching Cross-Platform Solution
我们有许多图片用作应用资产,为简单起见,假设只有 10 张图片。
据我了解,Xamarin.Forms不会兑现这些图片,所以如果我在工具栏中显示这 10 张图片(这只是为了解释问题,我们不会真的将 10 张图片放在一个小工具栏),我有 5 个页面显示相同的工具栏,这意味着 10 张图像将每 5 次加载一次,总共加载 50 张图像。我只想加载 10 张图片,而不是加载 5 页 x 10 张图片 = 50 张图片。
此外,如果我必须将这 10 张图像添加到我们的存储库中,我将必须向我们的存储库中添加至少 3 个相同图像的副本(1 个用于 Android,1 个用于 IOS, 1 个用于 UWP)。这导致存储库中有 30 张图片,但实际上我只需要 10 张。
所以,这 2 个问题让我相信应该有一个更好的跨平台解决方案,这样我就可以在所有 3 个平台上共享相同的图像,所有 3 个平台只使用一个图像(Android,IOS, UWP),我只在内存中加载一次图像,无论我在 UI.
中显示多少次
你可以查看支持缓存的FFImageLoading。要在共享代码中使用图像而不是特定于平台的代码,您可以查看嵌入式图像:
Embedded images are also shipped with an application (like local images) but instead of having a copy of the image in each application's file structure the image file is embedded in the assembly as a resource. This method of distributing images is particularly suited to creating components, as the image is bundled with the code.
https://developer.xamarin.com/guides/xamarin-forms/user-interface/images/#Embedded_Images
请记住,为每个平台添加图像并不是一件坏事。由于不同的像素密度等原因,每个平台都有自己的图像版本。因此,为了使其在每个平台上看起来都不错,您可能需要考虑特定于平台的路线。
另一种方法是将您的图像添加为每个平台特定文件中的文件链接图像。图像文件本身可以保存在一个位置并文件链接到每个平台的正确目录。
Xamarin.Forms 有一个名为 Forms9Patch 的库,它支持不同的分辨率和设备,就像 Android / iOS 的特定项目一样。
Forms9Patch 拥有 MIT 许可证,这里是 github。
这也是一个 video 应该给出一个很好的总体概述。
我们有许多图片用作应用资产,为简单起见,假设只有 10 张图片。
据我了解,Xamarin.Forms不会兑现这些图片,所以如果我在工具栏中显示这 10 张图片(这只是为了解释问题,我们不会真的将 10 张图片放在一个小工具栏),我有 5 个页面显示相同的工具栏,这意味着 10 张图像将每 5 次加载一次,总共加载 50 张图像。我只想加载 10 张图片,而不是加载 5 页 x 10 张图片 = 50 张图片。
此外,如果我必须将这 10 张图像添加到我们的存储库中,我将必须向我们的存储库中添加至少 3 个相同图像的副本(1 个用于 Android,1 个用于 IOS, 1 个用于 UWP)。这导致存储库中有 30 张图片,但实际上我只需要 10 张。
所以,这 2 个问题让我相信应该有一个更好的跨平台解决方案,这样我就可以在所有 3 个平台上共享相同的图像,所有 3 个平台只使用一个图像(Android,IOS, UWP),我只在内存中加载一次图像,无论我在 UI.
中显示多少次你可以查看支持缓存的FFImageLoading。要在共享代码中使用图像而不是特定于平台的代码,您可以查看嵌入式图像:
Embedded images are also shipped with an application (like local images) but instead of having a copy of the image in each application's file structure the image file is embedded in the assembly as a resource. This method of distributing images is particularly suited to creating components, as the image is bundled with the code.
https://developer.xamarin.com/guides/xamarin-forms/user-interface/images/#Embedded_Images
请记住,为每个平台添加图像并不是一件坏事。由于不同的像素密度等原因,每个平台都有自己的图像版本。因此,为了使其在每个平台上看起来都不错,您可能需要考虑特定于平台的路线。
另一种方法是将您的图像添加为每个平台特定文件中的文件链接图像。图像文件本身可以保存在一个位置并文件链接到每个平台的正确目录。
Xamarin.Forms 有一个名为 Forms9Patch 的库,它支持不同的分辨率和设备,就像 Android / iOS 的特定项目一样。
Forms9Patch 拥有 MIT 许可证,这里是 github。
这也是一个 video 应该给出一个很好的总体概述。