我的Gif图片大小为2 MB。我使用Xamarin Forms的库FFImageLoading进行加载。但是时间负载超过7秒。 如何快速加载gif图片?
我当前正在使用路径图片:
<ffimageloading:SvgCachedImage HorizontalOptions="Center" VerticalOptions="Center" Aspect="AspectFill" x:Name="Gif" Source="{Binding image}" Margin="0"/>
Gif图片的名称是:
image = "GifImage.gif"
用户迫不及待想加载图片gif。 因此,请支持我如何在Xamarin Forms上快速加载gif图像。
谢谢!
答案 0 :(得分:1)
您可以使用WebView
加载快速的Gif图像。
使用WebView不需要设置任何库。
我用它代替了库FFImageLoading
。
它创建一个.html包含Gif图像,因此加载速度非常快。
您可以在以下位置参考使用它:
WebView Gif Viewer
答案 1 :(得分:0)
在Xamarin表单上使用WebView:
在文件.xaml
上添加源:
<WebView HorizontalOptions="Center"
VerticalOptions="Center"
HeightRequest="{Binding HeightImage}"
WidthRequest="{Binding WidthImage}"
Source="{Binding LinkImageGif}" />
在文件.cs
上添加源:
int imageHeight = HeightImage;
int imageWidth = WidthImage;
var source = new HtmlWebViewSource
{
Html = $"<body\"><img src=\"{_srcImage}\" alt=\"A Gif file\" width=\"{imageWidth}\" height=\"{imageHeight}\" style=\"width: 100%; height: auto;\"/></body>",
BaseUrl = DependencyService.Get<IBaseUrl>().Get()
};
因为BaseUrl
的Android和iOS有所不同。因此,使用Share Project,创建一个依存关系。
首先,创建一个Interface
:
namespace abcxyz
{
public interface IBaseUrl { string Get(); }
}
在Android上,添加代码:
[assembly: Dependency(typeof(BaseUrlAndroid))]
namespace abcxyz
{
public class BaseUrlAndroid : IBaseUrl
{
public string Get() => "file:///android_asset/";
}
}
(Gif图片将添加到以下文件夹中:AndroidResource
的资产)
在iOS上,添加代码:
[assembly: Dependency(typeof(BaseUrlOniOs))]
namespace abcxyz
{
public class BaseUrlOniOs : IBaseUrl
{
public string Get()
{
return NSBundle.MainBundle.BundlePath;
}
}
}
(Gif图片将添加到iOS的文件夹:Resource
(BundleResource
))