3

我有一个使用 fresco 库加载图像的应用程序。我有2个问题。1.如果我像这样使用壁画图像

<com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/feedImage"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

它不会显示任何东西,只是在图像应该出现的地方显示一条细线。

但是,如果我做类似的事情

<com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/feedImage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        fresco:viewAspectRatio="1.33"
        android:scaleType="fitXY"
        />

一切正常(但我没有看到完整的图像)。

我想实现与 facebook 相同的视图(图像全宽和全高)。

  1. 我将图像加载到回收站的列表中。图像已加载到缓存中(我已验证),但如果我一直向下然后备份,我可以看到正在加载的图像(facebook 没有这个问题,它们使用相同的库)。如果我滚动真的很慢没有问题。我最近从凌空改变,我之前没有这个问题(所以它不是回收者)。我该如何解决这个问题?

编辑:我注意到的另一件事是,如果我禁用磁盘缓存并终止应用程序,缓存不会像文档中所说的那样被删除。我知道如果我调用ImagePipeline imagePipeline = Fresco.getImagePipeline(); Uri uri; imagePipeline.evictFromMemoryCache(uri);缓存将被删除,但这不应该是自动的吗?

4

1 回答 1

0

所以对于问题#2,我不完全确定我是否正确理解了这个问题,它根本不是问题。该图像很可能在内存缓存中,但是存储在缓存中的图像仍然需要解码才能显示在屏幕上,这可能是您所说的加载问题。您仅在快速滚动时看到此内容的原因是因为您使用的 RecyclerAdapter 正在赶上滚动位置。(这是一个有根据的猜测,绝不应该假设这是正确的)。当您缓慢移动并且看不到图像加载时,是因为适配器在屏幕上之前开始加载下一个 ViewHolder,但在那之前不会太多。所以当你快速滚动时,我相信它只是适配器在追赶它的 OnBindViewHolder 调用,

当应用程序像内存缓存一样在后台运行时,磁盘缓存不会被清除,因此如果需要,您需要将其逐出。

我不确定问题#1,但我会尝试找出原因。也许尝试将 scaletype 设置为 CropCenter 或其他东西,看看是否可以消除线条。

于 2015-11-12T20:41:24.253 回答