具有宽度和高度的壁画图像 - match_parent 不显示

2024-01-26

我有一个使用 fresco 库加载图像的应用程序。我有两个问题。 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 没有这个问题,并且他们使用相同的库)。如果我滚动得很慢,那没有问题。我最近从volley换了,以前没有这个问题(所以不是回收器)。我该如何解决这个问题?

编辑:我注意到的其他事情是,如果我禁用磁盘缓存并终止应用程序,则不会按照文档所述删除缓存。我知道如果我打电话ImagePipeline imagePipeline = Fresco.getImagePipeline(); Uri uri; imagePipeline.evictFromMemoryCache(uri);缓存将被删除,但这不应该是自动删除的吗?


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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有宽度和高度的壁画图像 - match_parent 不显示 的相关文章

随机推荐