Как быстро загрузить изображение GIF с использованием FFImageLoading в Xamarin Forms? - PullRequest
0 голосов
/ 09 октября 2018

Размер моего Gif-изображения составляет 2 МБ.Я использую библиотеку FFImageLoading Xamarin Forms, чтобы загрузить ее.Но время загрузки составляет более 7 секунд.Как быстро загрузить GIF-изображение?

В настоящее время я использую путь:

<ffimageloading:SvgCachedImage HorizontalOptions="Center" VerticalOptions="Center" Aspect="AspectFill" x:Name="Gif" Source="{Binding image}" Margin="0"/>

И имя GIF-изображения:

image = "GifImage.gif"

Пользователь не может ждатьзагрузить изображение GIF.Поэтому, пожалуйста, поддержите меня, как быстро загрузить GIF-изображение в Xamarin Forms.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Использовать WebView в формах Xamarin:

В файле .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-изображение будет добавлено в папку: Resource(BundleResource) iOS)

0 голосов
/ 17 ноября 2018

Вы можете использовать WebView для быстрой загрузки GIF-изображения.Использование WebView не требует настройки какой-либо библиотеки.Я использовал его, чтобы заменить библиотеку FFImageLoading.Он создает .html, содержащий изображение Gif, поэтому загружается очень быстро.Вы можете использовать его по ссылке: GIF Viewer WebView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...