Фреска играть GIF из файла - PullRequest
0 голосов
/ 02 мая 2018

Я использую этот код, чтобы показать простое изображение из файла. Но как я могу играть в GIF?

var CatalogMain = System.IO.Path.Combine(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures).ToString(), "NewFolder");

SimpleDraweeView MainImage = FindViewById<SimpleDraweeView>(Resource.Id.MainImageView);
Android.Net.Uri imageUri = Android.Net.Uri.FromFile(new Java.IO.File(CatalogMain, "Main.gif"));// For files on device
MainImage.SetImageURI(imageUri);

Я также нашел этот код, но я принимаю несколько ошибок. Я не знаю, как мне нужно конвертировать его для игры с xamarin.

Uri uri;
DraweeController controller = Fresco.NewDraweeControllerBuilder()
                                    .SetUri(imageUri)
                                    .setAutoPlayAnimations(true)
                                    .build();
mSimpleDraweeView.setController(controller);

Я получаю следующие ошибки

Ошибка CS0246 Тип или имя пространства имен 'DraweeController' не найдено.

Ошибка CS0103 Имя «mSimpleDraweeView» не существует в текущем.

Ошибка CS1061 «ISimpleDraweeControllerBuilder» не содержит определения.

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете использовать это:

Uri uri = Uri.Parse("http://img.huofar.com/data/jiankangrenwu/shizi.gif");

PipelineDraweeControllerBuilder pdcb= (PipelineDraweeControllerBuilder) Fresco.NewDraweeControllerBuilder()
                                               .SetAutoPlayAnimations(true);
IDraweeController draweeController = pdcb.SetUri(Uri.Parse("res://" + PackageName + "/" + Resource.Drawable.test)).Build();

SimpleDraweeView img = FindViewById<SimpleDraweeView>(Resource.Id.img);
img.Controller = draweeController;

Но, это может только загрузить изображение, gif не может быть воспроизведен. Потому что Fresco нужно com.facebook.fresco:animated-gif:1.9.0 для поддержки GIF (смотрите здесь ).

И NAXAM / привязка к фреско-андроиду не связывали com.facebook.fresco:animated-gif:1.9.0 в своем нугете. После выполнения Install-Package Naxam.Fresco.Droid в консоли диспетчера пакетов вы добавите в свой проект пять пакетов, а именно:

  • Naxam.Fresco.Droid
  • Naxam.FrescoCore.Droid
  • Naxam.FrescoDrawee.Droid
  • Naxam.FrescoImagePipeline.Droid
  • Naxam.FrescoImagePipelineBase.Droid.

но нет animated-gif.

Итак, я предлагаю вам использовать glide для загрузки gif, здесь - это просто:

var CatalogMain = System.IO.Path.Combine(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures).ToString(), "dbsoft");
Glide.With(this).AsGif().Load(new File(CatalogMain, "Main.gif")).Into(MainImage);

Я сделал демо , которое загружает гифки и с Фреско, и с Жильдом.

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