android - Fresco 从文件中播放 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 找不到类型或命名空间名称“DraweeController”。
错误 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没有绑定com.facebook.fresco:animated-gif:1.9.0
在他们的 nuget 中。在 Package Manager Console 上执行后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);
我做了一个演示,它使用 Fresco 和 Gilde 加载 gif。
推荐阅读
- python - 将数组从 PHP 传递到 Python 3
- python - 求解线性方程组以使用 scipy 最大化价值
- javascript - 从其他文件执行异步代码时的 Node.js 和 node-gtk 问题
- docker - 在多个 docker 容器之间分发文件
- python - 为什么索引 Numpy 列会创建副本,而不是行或一维数组?
- javascript - 为什么模态出现然后消失?
- c - 为什么我的 C 代码中的答案前面有“-”标记?
- c# - 从href点击列表中删除项目
- javascript - 使用 d3.js 创建径向(圆形)分组条形图
- link-to - Rails 5 无法完成“belongs_to”