Skip to content

Commit

Permalink
Removed SimpleDraweeView references from Showcase image format sample…
Browse files Browse the repository at this point in the history
…s and migrate to Vito

Reviewed By: kartavya-ramnani

Differential Revision: D60171145

fbshipit-source-id: bf47c250f417bd689cde0091475e7ce857a78f2b
  • Loading branch information
oprisnik authored and facebook-github-bot committed Jul 25, 2024
1 parent a94bd1f commit e7ce9b5
Show file tree
Hide file tree
Showing 17 changed files with 174 additions and 206 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,15 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.SwitchCompat;
import com.facebook.common.util.UriUtil;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.fresco.samples.showcase.BaseShowcaseFragment;
import com.facebook.fresco.samples.showcase.CustomImageFormatConfigurator;
import com.facebook.fresco.samples.showcase.R;
import com.facebook.fresco.samples.showcase.misc.CheckerBoardDrawable;
import com.facebook.fresco.vito.view.VitoView;

/**
* Color XML example. It has a toggle to enable / disable Color XML support and displays 1 image.
Expand All @@ -28,8 +29,10 @@
*/
public class ImageFormatColorFragment extends BaseShowcaseFragment {

private SimpleDraweeView mSimpleDraweeView1;
private SimpleDraweeView mSimpleDraweeView2;
private static final String CALLER_CONTEXT = "ImageFormatColorFragment";

private ImageView mImageView1;
private ImageView mImageView2;

@Nullable
@Override
Expand All @@ -40,25 +43,21 @@ public View onCreateView(

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
mSimpleDraweeView1 = (SimpleDraweeView) view.findViewById(R.id.drawee1);
mSimpleDraweeView2 = (SimpleDraweeView) view.findViewById(R.id.drawee2);
mImageView1 = view.findViewById(R.id.image1);
mImageView2 = view.findViewById(R.id.image2);

// Set a simple custom color resource as the image.
// The format of custom_color1 is <color>#rrggbb</color>
mSimpleDraweeView1.setImageURI(UriUtil.getUriForResourceId(R.raw.custom_color1));
mSimpleDraweeView2.setImageURI(UriUtil.getUriForResourceId(R.raw.custom_color2));
VitoView.show(UriUtil.getUriForResourceId(R.raw.custom_color1), CALLER_CONTEXT, mImageView1);
VitoView.show(UriUtil.getUriForResourceId(R.raw.custom_color2), CALLER_CONTEXT, mImageView2);

final SwitchCompat switchBackground = (SwitchCompat) view.findViewById(R.id.switch_background);
switchBackground.setOnCheckedChangeListener(
new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mSimpleDraweeView1
.getHierarchy()
.setBackgroundImage(isChecked ? new CheckerBoardDrawable(getResources()) : null);
mSimpleDraweeView2
.getHierarchy()
.setBackgroundImage(isChecked ? new CheckerBoardDrawable(getResources()) : null);
mImageView1.setBackground(isChecked ? new CheckerBoardDrawable(getResources()) : null);
mImageView2.setBackground(isChecked ? new CheckerBoardDrawable(getResources()) : null);
}
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,19 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.fresco.samples.showcase.BaseShowcaseFragment;
import com.facebook.fresco.samples.showcase.R;
import com.facebook.fresco.vito.source.ImageSourceProvider;
import com.facebook.fresco.vito.view.VitoView;

/** Fragment using a SimpleDraweeView to display a Keyframes animation */
/** Fragment using a ImageView to display a Keyframes animation */
public class ImageFormatDataUriFragment extends BaseShowcaseFragment {

private static final String CALLER_CONTEXT = "ImageFormatDataUriFragment";

/** A 100x100px PNG image with a blue star */
public static final String dataUri =
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGUAAABkCAIAAAAQQmk9AAAD2ElEQVR42u2cvW/cMAzF"
Expand Down Expand Up @@ -49,9 +53,8 @@ public View onCreateView(

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
final SimpleDraweeView simpleDraweeView = view.findViewById(R.id.drawee_view);
simpleDraweeView.setImageURI(dataUri, null);

final ImageView image = view.findViewById(R.id.image);
VitoView.show(ImageSourceProvider.forUri(dataUri), CALLER_CONTEXT, image);
final TextView uriContentTextView = view.findViewById(R.id.datauri_content_textview);
uriContentTextView.setText(dataUri);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

package com.facebook.fresco.samples.showcase.imageformat.gif;

import android.graphics.drawable.Animatable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
Expand All @@ -17,35 +16,34 @@
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.SwitchCompat;
import com.facebook.animated.giflite.GifDecoder;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilder;
import com.facebook.drawee.controller.BaseControllerListener;
import com.facebook.drawee.drawable.ScaleTypeDrawable;
import com.facebook.drawee.drawable.ScalingUtils;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.fresco.samples.showcase.BaseShowcaseFragment;
import com.facebook.fresco.samples.showcase.R;
import com.facebook.fresco.samples.showcase.misc.CheckerBoardDrawable;
import com.facebook.fresco.samples.showcase.misc.ImageUriProvider;
import com.facebook.fresco.vito.options.ImageOptions;
import com.facebook.fresco.vito.view.VitoView;
import com.facebook.imagepipeline.common.ImageDecodeOptions;
import com.facebook.imagepipeline.common.ImageDecodeOptionsBuilder;
import com.facebook.imagepipeline.image.ImageInfo;
import com.facebook.imagepipeline.request.ImageRequestBuilder;

/** GIF example that illustrates how to display a simple GIF file */
public class ImageFormatGifFragment extends BaseShowcaseFragment {

private static final String CALLER_CONTEXT = "ImageFormatGifFragment";
private Entry[] mSpinnerEntries;

private Spinner mSpinner;
private SimpleDraweeView mSimpleDraweeView;
private ImageView mImageView;
private @Nullable GifDecoder mGifDecoder;
private boolean mAutoPlayEnabled;
private boolean mIsPlaying;

@Nullable
@Override
Expand All @@ -70,16 +68,14 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
sampleUris().createGifUri(ImageUriProvider.ImageSize.L)),
};

mSimpleDraweeView = view.findViewById(R.id.drawee_view);
mImageView = view.findViewById(R.id.image);

final SwitchCompat switchBackground = view.findViewById(R.id.switch_background);
switchBackground.setOnCheckedChangeListener(
new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mSimpleDraweeView
.getHierarchy()
.setBackgroundImage(isChecked ? new CheckerBoardDrawable(getResources()) : null);
mImageView.setBackground(isChecked ? new CheckerBoardDrawable(getResources()) : null);
}
});
final SwitchCompat switchAutoPlay = view.findViewById(R.id.switch_autoplay);
Expand All @@ -98,9 +94,9 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
ViewGroup.LayoutParams layoutParams = mSimpleDraweeView.getLayoutParams();
ViewGroup.LayoutParams layoutParams = mImageView.getLayoutParams();
layoutParams.height = layoutParams.width * (isChecked ? 2 : 1);
mSimpleDraweeView.setLayoutParams(layoutParams);
mImageView.setLayoutParams(layoutParams);
}
});

Expand Down Expand Up @@ -148,52 +144,34 @@ private void refreshAnimation() {
}

private void setAnimationUri(Uri uri) {
final PipelineDraweeControllerBuilder controllerBuilder =
Fresco.newDraweeControllerBuilder()
.setAutoPlayAnimations(mAutoPlayEnabled)
.setOldController(mSimpleDraweeView.getController());

final ImageDecodeOptionsBuilder optionsBuilder =
ImageDecodeOptions.newBuilder().setMaxDimensionPx(4000);

if (mGifDecoder != null) {
optionsBuilder.setCustomImageDecoder(mGifDecoder);
}

controllerBuilder.setImageRequest(
ImageRequestBuilder.newBuilderWithSource(uri)
.setImageDecodeOptions(optionsBuilder.build())
.build());
final ImageOptions imageOptionsAutoPlay =
ImageOptions.create().autoPlay(true).imageDecodeOptions(optionsBuilder.build()).build();
final ImageOptions imageOptionsPaused =
imageOptionsAutoPlay.extend().autoPlay(false).overlay(getPlayOverlayDrawable()).build();
if (!mAutoPlayEnabled) {
controllerBuilder.setControllerListener(
new BaseControllerListener<ImageInfo>() {

mImageView.setOnClickListener(
new View.OnClickListener() {
@Override
public void onFinalImageSet(
String id, @Nullable ImageInfo imageInfo, final @Nullable Animatable animatable) {
if (animatable != null) {
mSimpleDraweeView.getHierarchy().setOverlayImage(getPlayOverlayDrawable());
mSimpleDraweeView.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
if (animatable.isRunning()) {
animatable.stop();
mSimpleDraweeView
.getHierarchy()
.setOverlayImage(getPlayOverlayDrawable());
} else {
animatable.start();
mSimpleDraweeView.getHierarchy().setOverlayImage(null);
}
}
});
public void onClick(View v) {
if (mIsPlaying) {
VitoView.show(uri, imageOptionsPaused, CALLER_CONTEXT, mImageView);
} else {
VitoView.show(uri, imageOptionsAutoPlay, CALLER_CONTEXT, mImageView);
}
mIsPlaying = !mIsPlaying;
}
});
VitoView.show(uri, imageOptionsPaused, CALLER_CONTEXT, mImageView);
} else {
mSimpleDraweeView.getHierarchy().setOverlayImage(null);
VitoView.show(uri, imageOptionsAutoPlay, CALLER_CONTEXT, mImageView);
}
mSimpleDraweeView.setController(controllerBuilder.build());
}

public Drawable getPlayOverlayDrawable() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,22 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.SwitchCompat;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.interfaces.DraweeController;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.fresco.samples.showcase.BaseShowcaseFragment;
import com.facebook.fresco.samples.showcase.CustomImageFormatConfigurator;
import com.facebook.fresco.samples.showcase.R;
import com.facebook.fresco.samples.showcase.misc.CheckerBoardDrawable;
import com.facebook.fresco.vito.options.ImageOptions;
import com.facebook.fresco.vito.view.VitoView;

/** Fragment using a SimpleDraweeView to display a Keyframes animation */
/** Fragment using a ImageView to display a Keyframes animation */
public class ImageFormatKeyframesFragment extends BaseShowcaseFragment {

private SimpleDraweeView mSimpleDraweeView;
private static final String CALLER_CONTEXT = "ImageFormatKeyframesFragment";
private static final ImageOptions IMAGE_OPTIONS = ImageOptions.create().autoPlay(true).build();
private ImageView mImageView;

@Nullable
@Override
Expand All @@ -42,24 +44,16 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
}

private void initAnimation(View view) {
mSimpleDraweeView = (SimpleDraweeView) view.findViewById(R.id.drawee_view);
mSimpleDraweeView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
DraweeController controller =
Fresco.newDraweeControllerBuilder()
.setOldController(mSimpleDraweeView.getController())
.setUri(sampleUris().createKeyframesUri())
.setAutoPlayAnimations(true)
.build();
mSimpleDraweeView.setController(controller);
mImageView = view.findViewById(R.id.image);
mImageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
VitoView.show(sampleUris().createKeyframesUri(), IMAGE_OPTIONS, CALLER_CONTEXT, mImageView);

final SwitchCompat switchBackground = (SwitchCompat) view.findViewById(R.id.switch_background);
switchBackground.setOnCheckedChangeListener(
new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mSimpleDraweeView
.getHierarchy()
.setBackgroundImage(isChecked ? new CheckerBoardDrawable(getResources()) : null);
mImageView.setBackground(isChecked ? new CheckerBoardDrawable(getResources()) : null);
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,19 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import com.facebook.common.util.UriUtil;
import com.facebook.drawee.backends.pipeline.DraweeConfig;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.controller.AbstractDraweeController;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.fresco.samples.showcase.BaseShowcaseFragment;
import com.facebook.fresco.samples.showcase.CustomImageFormatConfigurator;
import com.facebook.fresco.samples.showcase.R;
import com.facebook.fresco.samples.showcase.imageformat.color.ColorImageExample;
import com.facebook.imagepipeline.common.ImageDecodeOptions;
import com.facebook.fresco.vito.options.ImageOptions;
import com.facebook.fresco.vito.view.VitoView;
import com.facebook.imagepipeline.common.ImageDecodeOptionsBuilder;
import com.facebook.imagepipeline.decoder.ImageDecoder;
import com.facebook.imagepipeline.drawable.DrawableFactory;
import com.facebook.imagepipeline.request.ImageRequestBuilder;

/**
* Example that overrides the decoder for a given image request.
Expand All @@ -36,7 +35,14 @@
*/
public class ImageFormatOverrideExample extends BaseShowcaseFragment {

private static final String CALLER_CONTEXT = "ImageFormatOverrideExample";

private static final ImageDecoder CUSTOM_COLOR_DECODER = ColorImageExample.createDecoder();
private static final ImageOptions IMAGE_OPTIONS =
ImageOptions.create()
.imageDecodeOptions(
new ImageDecodeOptionsBuilder().setCustomImageDecoder(CUSTOM_COLOR_DECODER).build())
.build();

@Nullable
@Override
Expand All @@ -47,18 +53,9 @@ public View onCreateView(

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
SimpleDraweeView simpleDraweeView = (SimpleDraweeView) view.findViewById(R.id.drawee_view);

ImageDecodeOptions imageDecodeOptionsWithCustomDecoder =
new ImageDecodeOptionsBuilder().setCustomImageDecoder(CUSTOM_COLOR_DECODER).build();
ImageView imageView = view.findViewById(R.id.image);

AbstractDraweeController controller =
Fresco.newDraweeControllerBuilder()
.setImageRequest(
ImageRequestBuilder.newBuilderWithResourceId(R.raw.custom_color1)
.setImageDecodeOptions(imageDecodeOptionsWithCustomDecoder)
.build())
.build();
simpleDraweeView.setController(controller);
VitoView.show(
UriUtil.getUriForResourceId(R.raw.custom_color1), IMAGE_OPTIONS, CALLER_CONTEXT, imageView);
}
}
Loading

0 comments on commit e7ce9b5

Please sign in to comment.