- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试用 gif 制作一个 recyclerview。一切都显示完美,但 Fresco 不缓存 gif。向下滚动回收器并再次向上滚动后,gif 将再次加载。我认为它们应该被缓存并加载得更快一些。以前我用过ION library .加载速度更快,并且没有缓存问题。我不得不更改 lib,因为它在 gif 解码方面存在一些问题,如 here 所述.当前的解决方案如下所示:
//for default initial in application class
Fresco.initialize(this);
//I have also tried to change DiskCacheConfig and ImagePipelineConfig params.
//Without any positive result
//for recyclerview on onBindViewHolder
GenericDraweeHierarchy hierarchy = holder.draweeView.getHierarchy();
Uri uri = Uri.parse(path);
hierarchy.setPlaceholderImage(R.drawable.img_bg);
Logger.e(check(uri) + " " + uri.toString());
DraweeController controller = Fresco.newDraweeControllerBuilder().setUri(uri)
.setAutoPlayAnimations(true).build();
holder.draweeView.setController(controller);
//for method which show cached uri images in imagepipeline
public static boolean check(Uri uri) {
ImagePipeline imagePipeline = Fresco.getImagePipeline();
return imagePipeline.isInBitmapMemoryCache(uri);
}
//... all the time log shows "false + gif url"
我没有看到任何关于不缓存动画图像的信息。有关于不支持的动画图像后处理的信息,但它就是关于它的一切。如何正确缓存gif?
编辑:它看起来像 Fresco 缓存动画,因为下面的方法为重新加载的 gif 返回 true。
public static boolean isImageDownloaded(Uri loadUri) {
if (loadUri == null) {
return false;
}
CacheKey cacheKey = DefaultCacheKeyFactory.getInstance()
.getEncodedCacheKey(ImageRequest.fromUri(loadUri));
return ImagePipelineFactory.getInstance().getMainDiskStorageCache().hasKey(cacheKey)
|| ImagePipelineFactory.getInstance().getSmallImageDiskStorageCache()
.hasKey(cacheKey);
}
最佳答案
为了让事情更清楚一点,Fresco 有 3 级缓存:
权衡显然是空间与时间。可用内存有限,如果图像不在位图缓存中,则必须重新解码。此外,如果它也不在编码内存缓存中,则必须从磁盘读取,这也可能很慢。
现在回到动画图像。这是一个已知的限制。动画图像不会以其解码形式缓存,因为这会耗尽位图缓存(只需乘以 num_frames * width * height * 32bpp)并且单个动画图像可能会逐出缓存中的所有其他图像。相反,它们会按需解码,并且只有几个即将显示的帧会保存在短暂的缓存中。
我们有一些改进动画的计划,但我无法提供任何时间估计。
关于android - 在 fresco 中缓存 gif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35014663/
我在项目中添加 fresco 依赖项时遇到问题。 这里有一些问题的截图 最佳答案 你必须改变 compile 'com.facebook.fresco:fresco:0.8.1+' 与 compile
我想将 Fresco 库导入到我的项目中,所以我将以下行添加到我的 build.gradle 文件的依赖项部分: 编译'com.facebook.fresco:fresco:0.7.0+' 然后我构建
添加这个并没有解决我的问题implementation(“com.facebook.fresco:nativeimagetranscoder:3.0.0”)。但这解决了我使用Android Studi
我正在将 android 图像缓存库从 picasso 迁移到 fresco。我想知道是否有任何方法可以使已经捕捉到的图像无效,因为我正在添加功能来替换现有图像有办法在 picasso 中这样做 Pi
我有一个父 Activity ,其中有一个 SimpleDraweeView。我正在使用以下代码将图像附加到 SimpleDraweeView, Fresco.initialize(this); B
我是安卓新手。下面是我复制并稍微修改的示例代码,但它无法为 gif 图像设置动画。它只是在我的应用程序中显示为静态图像。 gifImage 没有动画。我什至尝试两次初始化 Controller 。
我有一些大小未知的本地镜像。格式为 jpeg。任务是调整它的大小以适应最大尺寸 1280x960 保持原始纵横比,并以低内存消耗将其保存到新文件。我在 Fresco lib 中找到了一个非常有用的方法
我一直在尝试通过 Facebook 使用 Fresco 库。 从文档中我了解到,当我们使用 SimpleDraweeView 时,图像缓存与 ImagePipeline 开箱即用。尽管 Fresco
我正在使用 Fresco 构建一个应用程序图书馆,通过 Facebook。 如果我的应用程序可在不同设备之间使用,我在尝试理解如何使用 Fresco 实现 View 时遇到了问题。正如您在附图中看到的
我刚刚迁移到 Fresco 库以在我的应用程序中加载图像。 我需要监听图像加载事件,当然我在文档中阅读了这篇文章 Listening to download events 这正是我所需要的,但是...
我正在上传一张图片到我的服务器,上传后我的服务器用新的 URI 响应它(可以是与旧的相同的 URL),我想删除旧的缓存图片并插入新的新的 URI。 我尝试通过以下方式实现: // Retrofit2
我正在尝试将图库中的图像显示到 SimpleDraweeView 中。我不知道这是不是这样做的方法,但我正在做的是进入画廊,选择图像并获取图像路径。之后,我使用 galleryImage.setIma
我正在使用 Fresco 库将图像和 gif 文件加载到我的应用程序中。我在使用 Fresco 时遇到的最大限制是必须设置布局宽度和高度。所以我已经像这样设置了我的简单受票人 View : 我的问
我在 azure 中托管我的应用程序(Web 服务 + 文件存储服务)。 我希望在我的应用程序中使用 Fresco (SimpleDraweeView),问题是我无法向用户提供直接的 url,因为 a
我有一个 SimpleDraweeView,它通过 Controller 处理图像请求: Postprocessor redMeshPostprocessor = new BasePostproces
我想知道是否有一种方法可以替换 Fresco 中的图像,而无需从服务器重新加载它。我有一个应用程序,让用户修改图像,然后将新图像上传到服务器。然而,按照 Fresco 的工作方式,我需要上传新图像,从
java.lang.IllegalMonitorStateException: unlock of unowned monitor on object of type 'com.facebook.c
我想在我的 android 应用程序中通过 fresco 加载图像后执行共享元素过渡动画。我按照此处所述收听下载事件; http://frescolib.org/docs/listening-down
我正在使用 fresco 向我的应用程序显示图像。现在我正在尝试对我的图像应用一些过滤器,但问题是过滤器库只产生位图。但 draweeView.setImageBitmap 已弃用。 我也试过这样的后
我刚刚开始使用 fresco,我已经按照他们文档中的步骤进行操作。我已经能够将 URI 加载到我的 ListView 适配器中的 SimpleDraweeView 中,现在我正在尝试实现渐进式 jpe
我是一名优秀的程序员,十分优秀!