当前位置: 首页 > 知识库问答 >
问题:

Fresco:快速滚动时Listview显示错误图像

南门飞扬
2023-03-14

我有自定义列表视图。在listview中包含200个项目。当我从上到下或从下到上快速滚动时,listview显示错误的图像。如果我在慢慢滚动,那么它的工作很好。

XML格式的SimpleDraweeView:

<com.facebook.drawee.view.SimpleDraweeView
            android:id="@+id/fake_image_list_group"
            android:layout_width="match_parent"
            android:layout_height="@dimen/note_list_item_height"
            android:background="@android:color/transparent"
            android:contentDescription="@string/app_name" />

将图像URI设置为SimpleDraweeView:

GenericDraweeHierarchy hierarchy = setHierarchyForDraweeView(mImageView, 300);
   hierarchy.setPlaceholderImage(new AsyncColorDrawable(context.getResources()));
   hierarchy.setFailureImage(mContext.getResources().getDrawable(R.drawable.broken_image_black));
   ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.fromFile(new File(mPath/*local path*/)))
           .setResizeOptions(new ResizeOptions(width, height))
           .setLocalThumbnailPreviewsEnabled(true)
           .build();
   DraweeController draweeController = Fresco.newDraweeControllerBuilder()
           .setImageRequest(imageRequest)
           .setOldController(mImageView.getController())
           .setAutoPlayAnimations(false)
           .build();
   mImageView.setController(draweeController);

SetHierarchyForDraweeView函数:

private GenericDraweeHierarchy setHierarchyForDraweeView(SimpleDraweeView draweeView, int duration) {
    if (draweeView != null) {
        if (draweeView.getHierarchy() == null) {
            GenericDraweeHierarchyBuilder builder = new GenericDraweeHierarchyBuilder(mContext.getResources());
            GenericDraweeHierarchy hierarchy = builder
                    .setFadeDuration(duration)
                    .setPlaceholderImage(new AsyncColorDrawable(mContext.getResources()))
                    .setFailureImage(mContext.getResources().getDrawable(R.drawable.broken_image_black))
                    .build();
            draweeView.setHierarchy(hierarchy);
        } else {
            GenericDraweeHierarchy hierarchy = draweeView.getHierarchy();
            hierarchy.setFadeDuration(duration);
            return hierarchy;
        }
    }
    return null;
}

AsyncColorDrawable类:

private class AsyncColorDrawable extends ColorDrawable {
    public AsyncColorDrawable(Resources res) {
        super(res.getColor(R.color.application_container_background_color));
    }
}

如果我做错了什么,请你想清楚。谢谢你的提前通知。

共有1个答案

乐成济
2023-03-14

为此,您需要使用通用图像加载器。它是一个聪明而强大的库,有助于在Android上加载、缓存和显示图像。看看这个

 类似资料:
  • 问题内容: 我有一个带有ArrayAdapter的ListView,其中包含带有图像和字符串的行。直到我确定图像的加载速度变慢,这样我才能在显示列表之前无法加载图像,这样效果很好。因此,我开始使用加载图像到单独的线程中AsyncTask。 在开始滚动列表之前,我对结果感到非常满意。加载了错误的图像,看起来好像不是图像稍后出现的问题。如果我尝试对列表进行排序,问题将变得非常严重,并且没有图像在右行。

  • 当我向下滚动到列表底部时,它会抛出一个错误,但如果不滚动,则所有工作都正常,请帮助我。下面是我的代码: CustomAdapter.java 这就是错误所在

  • 滚动显示是一个 JQuery 插件,根据滚动的距离来执行回调函数。我们将展示很多的示例来告诉你怎么使用。 jQuery 插件初始化 var options = [ {selector: '.class', offset: 200, callback: customCallbackFunc } }, {selector: '.other-class', offset: 200, ca

  • 滚动条在滚动时大致移动。启用fastcrollenable=“true”时,如何使滚动条平稳移动? 我已经找了一个月了。在android文档、stackoverflow和其他网站上都有,但我找不到。 在我的listview中,我只是添加......

  • 问题内容: 我正在使用Swift在iOS上进行编程,并且正在使用此代码移动,但是它不起作用。我正确调用了该函数,但是文本字段没有移动。我正在使用自动版式。 问题答案: 现有答案有一些改进。 首先, UIKeyboardWillChangeFrameNotification 可能是最好的通知,因为它处理的不仅是显示/隐藏,还包括由于键盘更改(语言,使用第三方键盘等)和旋转引起的更改(但下面的注释说明

  • 问题内容: 我需要函数或函数。 有各种和功能,但我很惊讶地发现缺少的功能。 为了使事情正常,我一直在使用这种相当慢的替代方法 我的数组通常包含32,000个元素,因此这被证明是一个瓶颈。我很想尝试,和,但是我认为我应该在这里提出问题,因为可能会有更好的解决方案。 问题答案: 我有一个更快的机制,尽管您需要运行一些测试以查看准确性是否足够。 这是原始的exp / sum / log版本: 这是一个使