Xamarin 图像加载事件
我想,当我的图像加载,然后GIF图像应该显示,但当图像加载完成,然后GIF应该消失。 但我不知道该怎么做。请告诉我一步一步的程序Xamarin 图像加载事件,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我想,当我的图像加载,然后GIF图像应该显示,但当图像加载完成,然后GIF应该消失。 但我不知道该怎么做。请告诉我一步一步的程序 imageWave1.IsVisible = !imageWave1.IsLoading; stackBehindImage.IsVisible = true; imageWave1.IsVisible = true; stackFrontImage.IsVisible = false; 第二个图像显示在GIF应该首先显示的位置,然后直到加载第二个图像 <St
imageWave1.IsVisible = !imageWave1.IsLoading;
stackBehindImage.IsVisible = true;
imageWave1.IsVisible = true;
stackFrontImage.IsVisible = false;
第二个图像显示在GIF应该首先显示的位置,然后直到加载第二个图像
<StackLayout x:Name="stackFrontImage" Padding="0" HeightRequest="100" Spacing="0" Margin="10" IsVisible="True">
<ffimageloading:SvgCachedImage HeightRequest="100"
HorizontalOptions="FillAndExpand"
VerticalOptions="Center"
Aspect="AspectFill"
x:Name="imageWave"
Source="outlet.gif"
IsVisible="True"
Margin="0"/>
</StackLayout>
<StackLayout x:Name="stackBehindImage" HeightRequest="100" Padding="0" Spacing="0" Margin="10" IsVisible="False">
<ffimageloading:SvgCachedImage x:Name="imageWave1"
HorizontalOptions="FillAndExpand"
VerticalOptions="Center"
Aspect="AspectFill"
HeightRequest="50"
Margin="0"/>
这是截图,请检查
您应该这样使用:
<ffimageloading:CachedImage HorizontalOptions="Center"
VerticalOptions="Center"
WidthRequest="300" HeightRequest="300"
DownsampleToViewSize="true"
LoadingPlaceholder = "loading.png"
Source = "http://loremflickr.com/600/600/nature?filename=simple.jpg">
</ffimageloading:CachedImage>
在此加载占位符中,您可以显示加载图像,一旦加载源图像,它将自动消失
有一个名为LoadingPlaceholder
的属性,可以在图像加载期间使用
每次图像加载之前/之后都会发生两个名为DownloadStarted
和Finish
的事件。您可以使用这两个事件来控制第二个图像的可视性
例如:
<ffimageloadingsvg:SvgCachedImage HeightRequest="100"
HorizontalOptions="FillAndExpand"
VerticalOptions="Center"
Aspect="AspectFill"
x:Name="imageWave"
Source="outlet.gif"
IsVisible="True"
Margin="0"
LoadingPlaceholder="imageWave1"
Finish="ImageWave_Finish"
DownloadStarted="ImageWave_DownloadStarted"
/>
您是如何加载图像的?您可以共享代码吗?您可以使用fImageLoading
。在实际图像加载之前,您可以使用任何图像。@JackHua MSFT我正在使用FFimageloading加载GIF,我有两个图像,一个是GIF,第二个是PNG,但当PNG加载时,GIF应该显示,当PNG加载成功时,GIF应该消失,PNG应该显示。@JackHua MSFT我正在使用FFimageloading加载GIF图像,我有两个图像,一个是GIF,另一个是PNG,但我希望在加载PNG时,直到那时GIF应该显示,当成功加载PNG时,GIF应该消失,PNG应该显示在上面。谢谢,这真的很有帮助,但如果你能告诉我关于它的后端代码,我应该在“ImageWave_DownloadStarted”中使用什么,这将更有帮助。查看我所做的,并纠正我的错误。@Manisha将stackFrontImage IsVisible=“True”更改为IsVisible=“false”。它正在抛出异常,即:异常:只有创建视图层次结构的原始线程才能触摸其viewsTry来更新主线程中的UI?这是第一个图像还是第二个图像将被加载?我不明白你的意思,尝试使用这个片段获取任何示例图像以了解插件的行为,稍后你可以根据你的要求进行修改。实际上我使用了这段代码,它工作正常,但问题是它在GIF后快速显示。所以你知道GIF应该放在第一位,并且需要一些时间,然后第二个图像应该在加载后显示。否则你的答案会很有帮助,但这并不是我想要的。我在这里提到的截图请检查。
private void ImageWave_Finish(object sender, FFImageLoading.Forms.CachedImageEvents.FinishEventArgs e)
{
stackBehindImage.IsVisible = true;
}
private void ImageWave_DownloadStarted(object sender, FFImageLoading.Forms.CachedImageEvents.DownloadStartedEventArgs e)
{
stackBehindImage.IsVisible = false;
}
<ffimageloading:CachedImage HorizontalOptions="Center"
VerticalOptions="Center"
WidthRequest="300" HeightRequest="300"
DownsampleToViewSize="true"
LoadingPlaceholder = "loading.png"
Source = "http://loremflickr.com/600/600/nature?filename=simple.jpg">
</ffimageloading:CachedImage>
<ffimageloadingsvg:SvgCachedImage HeightRequest="100"
HorizontalOptions="FillAndExpand"
VerticalOptions="Center"
Aspect="AspectFill"
x:Name="imageWave"
Source="outlet.gif"
IsVisible="True"
Margin="0"
LoadingPlaceholder="imageWave1"
Finish="ImageWave_Finish"
DownloadStarted="ImageWave_DownloadStarted"
/>
private void ImageWave_Finish(object sender, FFImageLoading.Forms.CachedImageEvents.FinishEventArgs e)
{
stackFrontImage.IsVisible = false;
}
private void ImageWave_DownloadStarted(object sender, FFImageLoading.Forms.CachedImageEvents.DownloadStartedEventArgs e)
{
stackFrontImage.IsVisible = true;
}