我有一个使用壁画库加载图像的应用程序。我有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相同的视图(图片全宽和高度)。
编辑:我注意到的另一件事是,如果我禁用磁盘缓存并终止应用程序,则不会删除缓存,正如文档所述。我知道如果我打电话给ImagePipeline imagePipeline = Fresco.getImagePipeline(); Uri uri; imagePipeline.evictFromMemoryCache(uri);
,缓存将被删除,但不应该自动删除吗?
答案 0 :(得分:0)
因此对于问题#2我并不完全确定我正确理解这个问题它根本不是问题。图像很可能在内存缓存中,但是存储在缓存中的图像仍然需要在屏幕上显示之前进行解码,这可能是您所说的加载问题。你只是在快速滚动时才看到这个的原因是因为你正在使用的RecyclerAdapter正在赶上滚动位置。(这是一个有根据的猜测,绝不应该认为这是正确的)。当您缓慢移动并且没有看到图像加载是因为适配器开始在屏幕上加载下一个ViewHolder,但在此之前没有多少。因此,当您快速滚动时,我认为只是适配器正在追赶它的OnBindViewHolder调用,而不是慢慢地移动它不需要播放赶上并在到达recyclerview中的下一个项目之前加载图像。
当应用程序像内存缓存一样后台时,磁盘缓存不会被清除,因此如果需要,您将需要逐出它。
我不确定问题#1但我会尽力找出原因。也许尝试将scaletype设置为CropCenter或其他东西,然后查看是否会排除这些线条。