简体   繁体   English

壁画从文件播放GIF

[英]Fresco play gif from file

I'm using this code to show just a simple image from file. 我正在使用此代码仅显示文件中的简单图像。 But how can i play gif? 但是我怎么玩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);

I also found this code, but i'm taking several errors. 我也找到了这段代码,但是我遇到了几个错误。 I dont know how i need to convert it for playing with xamarin. 我不知道我需要如何转换才能与xamarin一起玩。

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

I'm getting following errors 我遇到以下错误

Error CS0246 The type or namespace name 'DraweeController' could not be found. 错误CS0246找不到类型或名称空间名称'DraweeController'。

Error CS0103 The name 'mSimpleDraweeView' does not exist in the current. 错误CS0103当前名称'mSimpleDraweeView'不存在。

Error CS1061 'ISimpleDraweeControllerBuilder' does not contain a definition. 错误CS1061'ISimpleDraweeControllerBuilder'不包含定义。

You can use this: 您可以使用此:

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;

But, this can only load the picture, the gif can't be played. 但是,这只能加载图片,无法播放gif。 Because Fresco need com.facebook.fresco:animated-gif:1.9.0 to support gif (look here ). 因为Fresco需要com.facebook.fresco:animated-gif:1.9.0来支持gif(请com.facebook.fresco:animated-gif:1.9.0 此处 )。

And NAXAM/fresco-android-binding did't bind com.facebook.fresco:animated-gif:1.9.0 in their nuget. NAXAM / fresco-android-binding com.facebook.fresco:animated-gif:1.9.0在其nuget中绑定com.facebook.fresco:animated-gif:1.9.0 After execute Install-Package Naxam.Fresco.Droid on Package Manager Console, you will add five packages into your project, they are: 在Package Manager控制台上执行Install-Package Naxam.Fresco.Droid之后,您将向您的项目中添加五个软件包,它们是:

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

But there is no animated-gif . 但是没有animated-gif

So, I suggest you to use glide to load gif, here is a simple: 因此,我建议您使用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);

I have made a demo which loads the gif with both Fresco and Gilde. 我制作了一个演示 ,其中将Fresco和Gilde都加载了gif。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM