我们想用svg图片替换移动应用中的所有图片。 图像正在运行,但是出现图像时会有延迟。我正在尝试实现preloadasync方法,以便它在启动时加载所有svg图像,但是我一直收到异常。
System.ArgumentNullException:值不能为null。 参数名称:流和解码 在FFImageLoading.DataResolvers.WrappedDataResolver.Resolve(System.String标识符,FFImageLoading.Work.TaskParameter参数,System.Threading.CancellationToken ...
有人看到我做错了事或给出了有效的例子吗?
我已经看过Internet,但是没有一个预加载svg文件的有效示例。 我100%确保正确给出了SVG路径,否则我将得到fileNotFoundException。
private async Task PreloadImages() //in xaml.cs
{
var resources = Assembly.GetExecutingAssembly().GetManifestResourceNames();
foreach (var r in resources)
{
if (!r.EndsWith(".svg")) continue;
try
{
//Exception here await ImageService.Instance.LoadEmbeddedResource($"resource://{r}").PreloadAsync();
}
catch (Exception ex)
{
_logger.Log(ex.Message)
}
}
}
<StackLayout> //in xaml
<ffimageloadingsvg:SvgCachedImage
CacheDuration="0"
FadeAnimationEnabled="False"
FadeAnimationForCachedImages="False"
HeightRequest="60"
HorizontalOptions="Center"
LoadingDelay="0"
Source="resource://ProjectName.Resources.SVG.Customer.svg"
VerticalOptions="Center"
WidthRequest="60">
<ffimageloadingsvg:SvgCachedImage.GestureRecognizers>
<TapGestureRecognizer Command="{Binding CustomerCommand}" NumberOfTapsRequired="1" />
</ffimageloadingsvg:SvgCachedImage.GestureRecognizers>
</ffimageloadingsvg:SvgCachedImage>
<Label
HorizontalOptions="Center"
IsVisible="{Binding CustomerManagementVisible}"
Text="{xaml:Translate General.Customers}"
VerticalOptions="Center" />
</StackLayout>
我们希望图像像标签一样立即显示。但是现在,我们仍然延迟了一秒钟,因为标签已经可见,而图像不可见。