Fresco不支持像毕加索这样的调整大小选项

时间:2017-05-02 06:28:08

标签: android facebook image-loading fresco image-caching

我试图使用Fresco而不是Picasso来避免内存泄漏但发现Fresco不支持缩放,因为Picasso支持它

以下是使用picasso调整图像大小的代码

 PicassoCache.getPicassoInstance(holder.itemView.getContext()) 
.load(Uri.encode(item.imageUrl, Constants.ALLOWED_URI_CHARS)) 
.tag(Constants.IMAGE_LOADING_TAGS.ALL_DEAL) 
.placeholder(R.drawable.imgload)
.error(R.drawable.imgntfound) 
.resize(200, 0) 
.into(holder.itemImage);

现在,picasso允许宽度和高度为零,并相应地调整图像大小。但发现Fresco不支持任何这样的功能,我必须同时指定宽度和高度。

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri) 
.setResizeOptions(new ResizeOptions(200, 200)) 
.build(); 
DraweeController controller = Fresco.newDraweeControllerBuilder() 
.setOldController(holder.itemImage.getController())  
.setImageRequest(request) 
.build(); 
 holder.itemImage.setController(controller);

有没有机会使用壁画实现这一目标

2 个答案:

答案 0 :(得分:0)

你可以这样实现它对我有用。

ImageRequest request = ImageRequestBuilder
                .newBuilderWithSource(uri)
                .setResizeOptions(new ResizeOptions(250, 250))
                .setLocalThumbnailPreviewsEnabled(true).build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
                .setImageRequest(request)
                .setOldController(holder.iv_product.getController())
                .build();
holder.iv_product.setController(controller);

这是我使用的layout.xml。

<com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/iv_product"
        android:layout_width="160dp"
        android:layout_height="165dp"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center_vertical|center_horizontal"
        android:padding="1dp"
        fresco:actualImageScaleType="fitCenter"
        fresco:fadeDuration="1000"
        fresco:placeholderImage="@drawable/default_product_logo"
        fresco:viewAspectRatio="0.99" />

答案 1 :(得分:0)

请参阅我在GitHub上的回答:不幸的是,目前不支持您必须同时指定宽度和高度。同样,Fresco也不支持wrap_content。有关此主题的更多信息,请访问:http://frescolib.org/docs/wrap-content.html