Skip to content

Commit

Permalink
Showcase: Remove SimpleDraweeView reference for ImagePipelineRegionDe…
Browse files Browse the repository at this point in the history
…codingFragment

Reviewed By: kartavya-ramnani

Differential Revision: D68627238

fbshipit-source-id: cce7a9f85d5c739c47f6ea2ee1220d6e30cdeb77
  • Loading branch information
oprisnik authored and facebook-github-bot committed Jan 30, 2025
1 parent 731e6a5 commit c7014d5
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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<ImageInfo> mControllerListener =
new BaseControllerListener<ImageInfo>() {
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();
}
}
Expand All @@ -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) {
Expand All @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:fresco="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
Expand All @@ -14,12 +13,10 @@
android:layout_height="wrap_content"
>

<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/drawee_view_full"
<com.facebook.fresco.samples.showcase.common.ImageViewWithAspectRatio
android:id="@+id/image_view_full"
android:layout_width="match_parent"
android:layout_height="wrap_content"
fresco:viewAspectRatio="2"
fresco:actualImageScaleType="fitCenter"
/>

<com.facebook.fresco.samples.showcase.imagepipeline.widget.ResizableFrameLayout
Expand Down Expand Up @@ -53,11 +50,10 @@
android:textAppearance="?android:attr/textAppearanceSmall"
/>

<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/drawee_view_region"
<ImageView
android:id="@+id/image_view_region"
android:layout_width="match_parent"
android:layout_height="match_parent"
fresco:actualImageScaleType="fitCenter"
/>

</LinearLayout>

0 comments on commit c7014d5

Please sign in to comment.