From c7014d55ab12b1dadf624cf6d29c30107ec94188 Mon Sep 17 00:00:00 2001 From: Alexander Oprisnik Date: Wed, 29 Jan 2025 17:44:06 -0800 Subject: [PATCH] Showcase: Remove SimpleDraweeView reference for ImagePipelineRegionDecodingFragment Reviewed By: kartavya-ramnani Differential Revision: D68627238 fbshipit-source-id: cce7a9f85d5c739c47f6ea2ee1220d6e30cdeb77 --- .../ImagePipelineRegionDecodingFragment.java | 68 +++++++++---------- ...fragment_imagepipeline_region_decoding.xml | 12 ++-- 2 files changed, 38 insertions(+), 42 deletions(-) diff --git a/samples/showcase/src/main/java/com/facebook/fresco/samples/showcase/imagepipeline/ImagePipelineRegionDecodingFragment.java b/samples/showcase/src/main/java/com/facebook/fresco/samples/showcase/imagepipeline/ImagePipelineRegionDecodingFragment.java index 6c29fd3831..a3b7fc37e5 100644 --- a/samples/showcase/src/main/java/com/facebook/fresco/samples/showcase/imagepipeline/ImagePipelineRegionDecodingFragment.java +++ b/samples/showcase/src/main/java/com/facebook/fresco/samples/showcase/imagepipeline/ImagePipelineRegionDecodingFragment.java @@ -9,22 +9,26 @@ import android.graphics.Bitmap; import android.graphics.Rect; -import android.graphics.drawable.Animatable; +import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import androidx.annotation.Nullable; import com.facebook.common.references.CloseableReference; import com.facebook.drawee.backends.pipeline.Fresco; -import com.facebook.drawee.controller.BaseControllerListener; -import com.facebook.drawee.controller.ControllerListener; -import com.facebook.drawee.view.SimpleDraweeView; +import com.facebook.drawee.drawable.ScalingUtils; import com.facebook.fresco.samples.showcase.BaseShowcaseFragment; import com.facebook.fresco.samples.showcase.R; +import com.facebook.fresco.samples.showcase.common.ImageViewWithAspectRatio; import com.facebook.fresco.samples.showcase.imagepipeline.widget.ResizableFrameLayout; import com.facebook.fresco.samples.showcase.misc.ImageUriProvider; +import com.facebook.fresco.vito.listener.BaseImageListener; +import com.facebook.fresco.vito.listener.ImageListener; +import com.facebook.fresco.vito.options.ImageOptions; +import com.facebook.fresco.vito.view.VitoView; import com.facebook.imagepipeline.common.ImageDecodeOptions; import com.facebook.imagepipeline.decoder.ImageDecoder; import com.facebook.imagepipeline.image.CloseableImage; @@ -33,29 +37,30 @@ import com.facebook.imagepipeline.image.ImageInfo; import com.facebook.imagepipeline.image.QualityInfo; import com.facebook.imagepipeline.platform.PlatformDecoder; -import com.facebook.imagepipeline.request.ImageRequestBuilder; /** Simple region decoding example that renders the original image and a selected region. */ public class ImagePipelineRegionDecodingFragment extends BaseShowcaseFragment { - private SimpleDraweeView mFullDraweeView; + private static final String CALLER_CONTEXT = "ImagePipelineRegionDecodingFragment"; + private static final ImageOptions IMAGE_OPTIONS = + ImageOptions.create().scale(ScalingUtils.ScaleType.FIT_CENTER).build(); + + private ImageViewWithAspectRatio mFullImageView; private ResizableFrameLayout mSelectedRegion; - private SimpleDraweeView mRegionDraweeView; + private ImageView mRegionImageView; private Uri mUri; private @Nullable ImageInfo mImageInfo; - private final ControllerListener mControllerListener = - new BaseControllerListener() { + private final ImageListener mImageListener = + new BaseImageListener() { @Override public void onFinalImageSet( - String id, - @javax.annotation.Nullable ImageInfo imageInfo, - @javax.annotation.Nullable Animatable animatable) { + long id, int imageOrigin, @Nullable ImageInfo imageInfo, @Nullable Drawable drawable) { mImageInfo = imageInfo; mSelectedRegion.setUpdateMaximumDimensionOnNextSizeChange(true); if (imageInfo != null) { - mFullDraweeView.setAspectRatio(imageInfo.getWidth() / (float) imageInfo.getHeight()); - mFullDraweeView.requestLayout(); + mFullImageView.setAspectRatio(imageInfo.getWidth() / (float) imageInfo.getHeight()); + mFullImageView.requestLayout(); updateRegion(); } } @@ -82,19 +87,15 @@ public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) sampleUris() .createSampleUri(ImageUriProvider.ImageSize.L, ImageUriProvider.Orientation.LANDSCAPE); - mFullDraweeView = (SimpleDraweeView) view.findViewById(R.id.drawee_view_full); - mFullDraweeView.setController( - Fresco.newDraweeControllerBuilder() - .setUri(mUri) - .setControllerListener(mControllerListener) - .build()); + mFullImageView = (ImageViewWithAspectRatio) view.findViewById(R.id.image_view_full); + VitoView.show(mUri, IMAGE_OPTIONS, CALLER_CONTEXT, mImageListener, mFullImageView); mSelectedRegion = (ResizableFrameLayout) view.findViewById(R.id.frame_main); mSelectedRegion.init(view.findViewById(R.id.btn_resize)); mSelectedRegion.setSizeChangedListener(mSizeChangedListener); - mRegionDraweeView = (SimpleDraweeView) view.findViewById(R.id.drawee_view_region); - mRegionDraweeView.setOnClickListener( + mRegionImageView = (ImageView) view.findViewById(R.id.image_view_region); + mRegionImageView.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { @@ -112,23 +113,22 @@ private void updateRegion() { int right = mSelectedRegion.getMeasuredWidth() * mImageInfo.getWidth() - / mFullDraweeView.getMeasuredWidth(); + / mFullImageView.getMeasuredWidth(); int bottom = mSelectedRegion.getMeasuredHeight() * mImageInfo.getHeight() - / mFullDraweeView.getMeasuredHeight(); + / mFullImageView.getMeasuredHeight(); ImageDecoder regionDecoder = createRegionDecoder(left, top, right, bottom); - mRegionDraweeView.setController( - Fresco.newDraweeControllerBuilder() - .setImageRequest( - ImageRequestBuilder.newBuilderWithSource(mUri) - .setImageDecodeOptions( - ImageDecodeOptions.newBuilder() - .setCustomImageDecoder(regionDecoder) - .build()) - .build()) - .build()); + VitoView.show( + mUri, + IMAGE_OPTIONS + .extend() + .imageDecodeOptions( + ImageDecodeOptions.newBuilder().setCustomImageDecoder(regionDecoder).build()) + .build(), + CALLER_CONTEXT, + mRegionImageView); } private ImageDecoder createRegionDecoder(int left, int top, int right, int bottom) { diff --git a/samples/showcase/src/main/res/layout/fragment_imagepipeline_region_decoding.xml b/samples/showcase/src/main/res/layout/fragment_imagepipeline_region_decoding.xml index e7f38ad7bc..be7bcbb4b1 100644 --- a/samples/showcase/src/main/res/layout/fragment_imagepipeline_region_decoding.xml +++ b/samples/showcase/src/main/res/layout/fragment_imagepipeline_region_decoding.xml @@ -2,7 +2,6 @@ - -