Gif изображение в Android Xamarin

178
06 апреля 2019, 08:10

Есть метод для появления Gif

public void GifStart()
    {
        webGif.LoadUrl(string.Format("file:///android_asset/AgifLoading.gif")); 
        //проигрывается только 1 раз
    }

Метод для остановки Gif

    public void GifStop()
    {
       webGif.ClearAnimation(); //это не работает
    }

Ну и метод в котором показывается Gif

private async Task NickParser()
{
   GifStart();
   //остальной код
   GifStop();
}

Хочу сделать, чтобы при запуске метода, в определеном месте появлялось Gif изображение и работало до тех пор, пока асинронный метод не вернул результат.

Такой себе кастомный прогресс бар. Как реализовать?

Answer 1

Хочу сделать, чтобы при запуске метода, в определеном месте появлялось Gif изображение и работало до тех пор, пока асинронный метод не вернул результат.

Использовать события. Например,

public class Loader
{
    public event EventHandler StarLoadingData;
    public event EventHandler EndLoadingData;
    public async Task LoadingData()
    {
        StarLoadingData?.Invoke(this, EventArgs.Empty);
        await Task.Delay(5000);
        EndLoadingData?.Invoke(this, EventArgs.Empty);
    }
}

Подписываемся на события таким образом:

loader = new Loader();
loader.StarLoadingData += Loader_StarLoadingData;
loader.EndLoadingData += Loader_EndLoadingData;
private void Loader_StarLoadingData(object sender, EventArgs e)
{
    GifStart();
}
private void Loader_EndLoadingData(object sender, EventArgs e)
{
    GifStop();
}

По окончании работы с объектом не забывайте отписываться от событий:

loader.StarLoadingData -= Loader_StarLoadingData;
loader.EndLoadingData -= Loader_EndLoadingData;

Подробнее о событиях можно почитать здесь.

Для анимации попробуйте библиотеку Lottie. Поддерживается Xamarin и Xamarin.Forms. Здесь можно найти готовую анимацию для данной библиотеки.

READ ALSO
Упростить код десериализации

Упростить код десериализации

Помогите упростить кодНаверно, это можно сделать через LINQ или как-то ещё

161
Архитектура авторизации в приложении

Архитектура авторизации в приложении

Мое приложение авторизовываться с помощью одного метода Authorize в сервисе wcfАргумент ы метода - логин, пароль, параметры машины пользователя...

146
Работа с SqlCommandBuilder

Работа с SqlCommandBuilder

У меня есть 2 таблицы, хочу добавить по строке в каждую и передать изменения в БДПользуюсь при этом SqlCommandBuilder

173
Не работает Environment.NewLine в Mono

Не работает Environment.NewLine в Mono

Наступил на граблиИспользую RichTextBox в приложение на WindowsForms, которое в дальнейшем запускаю на Ubuntu коммандой mono TestApp

158