我试图使用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);
有没有机会使用壁画实现这一目标
答案 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