簡體   English   中英

壁畫:快速滾動時Listview顯示錯誤圖像

[英]Fresco : Listview showing wrong image when fast scrolling

我有自定義列表視圖。 在列表視圖中包含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));
    }
}

如果我做錯了什么,請弄清楚。 感謝前進。

為此,您需要使用Universal Image Loader。 它是一個強大的智能庫,可幫助在Android上加載,緩存和顯示圖像。 看看這個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM