Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Xamarin表单中使用FFImageLoading快速加载gif图像?_C#_.net_Xamarin_Xamarin.forms - Fatal编程技术网

C# 如何在Xamarin表单中使用FFImageLoading快速加载gif图像?

C# 如何在Xamarin表单中使用FFImageLoading快速加载gif图像?,c#,.net,xamarin,xamarin.forms,C#,.net,Xamarin,Xamarin.forms,我的Gif图像大小为2MB。我使用Xamarin表单的库加载来加载它。但时间负载超过7秒。 如何快速加载gif图像 我当前正在使用路径图像: <ffimageloading:SvgCachedImage HorizontalOptions="Center" VerticalOptions="Center" Aspect="AspectFill" x:Name="Gif" Source="{Binding image}" Margin="0"/> 用户无法等待加载图像gif。 所以,

我的Gif图像大小为2MB。我使用Xamarin表单的库加载来加载它。但时间负载超过7秒。 如何快速加载gif图像

我当前正在使用路径图像:

<ffimageloading:SvgCachedImage HorizontalOptions="Center" VerticalOptions="Center" Aspect="AspectFill" x:Name="Gif" Source="{Binding image}" Margin="0"/>
用户无法等待加载图像gif。 所以,请支持我如何在Xamarin表单上快速加载gif图像


谢谢

您可以使用
WebView
加载快速Gif图像。 使用WebView不需要设置任何库。 我用它来代替库
ffimageload
。 它创建一个包含Gif图像的.html文件,所以加载速度非常快。 您可以在以下位置使用它:
在Xamarin表单上使用WebView:

在文件
.xaml
中添加源代码:

            <WebView HorizontalOptions="Center"
                 VerticalOptions="Center"
                 HeightRequest="{Binding HeightImage}"
                 WidthRequest="{Binding WidthImage}"
                 Source="{Binding LinkImageGif}" />
            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()
            };
因为Android和iOS的
BaseUrl
是不同的。所以,使用共享项目,创建依赖关系

首先,创建一个
接口

namespace abcxyz
{
    public interface IBaseUrl { string Get(); }
}
在Android的dependecy中,添加代码:

[assembly: Dependency(typeof(BaseUrlAndroid))]
namespace abcxyz
{
    public class BaseUrlAndroid : IBaseUrl
    {
        public string Get() => "file:///android_asset/";
    }
}
[assembly: Dependency(typeof(BaseUrlOniOs))]
namespace abcxyz
{
    public class BaseUrlOniOs : IBaseUrl
    {
        public string Get()
        {
            return NSBundle.MainBundle.BundlePath;
        }
    }
}
(Gif图像将添加到文件夹:AndroidResource的资产

根据iOS,添加代码:

[assembly: Dependency(typeof(BaseUrlAndroid))]
namespace abcxyz
{
    public class BaseUrlAndroid : IBaseUrl
    {
        public string Get() => "file:///android_asset/";
    }
}
[assembly: Dependency(typeof(BaseUrlOniOs))]
namespace abcxyz
{
    public class BaseUrlOniOs : IBaseUrl
    {
        public string Get()
        {
            return NSBundle.MainBundle.BundlePath;
        }
    }
}
(Gif图像将添加到iOS的文件夹:
Resource
BundleResource