壁画播放文件中的 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);

我也找到了这段代码,但我犯了几个错误。我不知道我需要如何转换它以使用 xamarin。

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

我收到以下错误

错误 CS0246 找不到类型或命名空间名称"绘制控制器"。

错误 CS0103 名称"mSimpleDraweeView"在当前中不存在。

错误 CS1061"ISimpleDraweeControllerBuilder" 不包含定义。

你可以使用这个:

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/fresco-android-binding并没有在他们的nuget中绑定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.

所以,我建议你用滑翔来加载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);

我做了一个演示,用壁画和吉尔德加载 gif。

最新更新