Skip to content

Commit e7ce9b5

Browse files
oprisnikfacebook-github-bot
authored andcommitted
Removed SimpleDraweeView references from Showcase image format samples and migrate to Vito
Reviewed By: kartavya-ramnani Differential Revision: D60171145 fbshipit-source-id: bf47c250f417bd689cde0091475e7ce857a78f2b
1 parent a94bd1f commit e7ce9b5

17 files changed

+174
-206
lines changed

samples/showcase/src/main/java/com/facebook/fresco/samples/showcase/imageformat/color/ImageFormatColorFragment.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,15 @@
1212
import android.view.View;
1313
import android.view.ViewGroup;
1414
import android.widget.CompoundButton;
15+
import android.widget.ImageView;
1516
import androidx.annotation.Nullable;
1617
import androidx.appcompat.widget.SwitchCompat;
1718
import com.facebook.common.util.UriUtil;
18-
import com.facebook.drawee.view.SimpleDraweeView;
1919
import com.facebook.fresco.samples.showcase.BaseShowcaseFragment;
2020
import com.facebook.fresco.samples.showcase.CustomImageFormatConfigurator;
2121
import com.facebook.fresco.samples.showcase.R;
2222
import com.facebook.fresco.samples.showcase.misc.CheckerBoardDrawable;
23+
import com.facebook.fresco.vito.view.VitoView;
2324

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

31-
private SimpleDraweeView mSimpleDraweeView1;
32-
private SimpleDraweeView mSimpleDraweeView2;
32+
private static final String CALLER_CONTEXT = "ImageFormatColorFragment";
33+
34+
private ImageView mImageView1;
35+
private ImageView mImageView2;
3336

3437
@Nullable
3538
@Override
@@ -40,25 +43,21 @@ public View onCreateView(
4043

4144
@Override
4245
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
43-
mSimpleDraweeView1 = (SimpleDraweeView) view.findViewById(R.id.drawee1);
44-
mSimpleDraweeView2 = (SimpleDraweeView) view.findViewById(R.id.drawee2);
46+
mImageView1 = view.findViewById(R.id.image1);
47+
mImageView2 = view.findViewById(R.id.image2);
4548

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

5154
final SwitchCompat switchBackground = (SwitchCompat) view.findViewById(R.id.switch_background);
5255
switchBackground.setOnCheckedChangeListener(
5356
new CompoundButton.OnCheckedChangeListener() {
5457
@Override
5558
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
56-
mSimpleDraweeView1
57-
.getHierarchy()
58-
.setBackgroundImage(isChecked ? new CheckerBoardDrawable(getResources()) : null);
59-
mSimpleDraweeView2
60-
.getHierarchy()
61-
.setBackgroundImage(isChecked ? new CheckerBoardDrawable(getResources()) : null);
59+
mImageView1.setBackground(isChecked ? new CheckerBoardDrawable(getResources()) : null);
60+
mImageView2.setBackground(isChecked ? new CheckerBoardDrawable(getResources()) : null);
6261
}
6362
});
6463

samples/showcase/src/main/java/com/facebook/fresco/samples/showcase/imageformat/datauri/ImageFormatDataUriFragment.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,19 @@
1111
import android.view.LayoutInflater;
1212
import android.view.View;
1313
import android.view.ViewGroup;
14+
import android.widget.ImageView;
1415
import android.widget.TextView;
1516
import androidx.annotation.Nullable;
16-
import com.facebook.drawee.view.SimpleDraweeView;
1717
import com.facebook.fresco.samples.showcase.BaseShowcaseFragment;
1818
import com.facebook.fresco.samples.showcase.R;
19+
import com.facebook.fresco.vito.source.ImageSourceProvider;
20+
import com.facebook.fresco.vito.view.VitoView;
1921

20-
/** Fragment using a SimpleDraweeView to display a Keyframes animation */
22+
/** Fragment using a ImageView to display a Keyframes animation */
2123
public class ImageFormatDataUriFragment extends BaseShowcaseFragment {
2224

25+
private static final String CALLER_CONTEXT = "ImageFormatDataUriFragment";
26+
2327
/** A 100x100px PNG image with a blue star */
2428
public static final String dataUri =
2529
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGUAAABkCAIAAAAQQmk9AAAD2ElEQVR42u2cvW/cMAzF"
@@ -49,9 +53,8 @@ public View onCreateView(
4953

5054
@Override
5155
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
52-
final SimpleDraweeView simpleDraweeView = view.findViewById(R.id.drawee_view);
53-
simpleDraweeView.setImageURI(dataUri, null);
54-
56+
final ImageView image = view.findViewById(R.id.image);
57+
VitoView.show(ImageSourceProvider.forUri(dataUri), CALLER_CONTEXT, image);
5558
final TextView uriContentTextView = view.findViewById(R.id.datauri_content_textview);
5659
uriContentTextView.setText(dataUri);
5760
}

samples/showcase/src/main/java/com/facebook/fresco/samples/showcase/imageformat/gif/ImageFormatGifFragment.java

Lines changed: 25 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

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

10-
import android.graphics.drawable.Animatable;
1110
import android.graphics.drawable.Drawable;
1211
import android.net.Uri;
1312
import android.os.Bundle;
@@ -17,35 +16,34 @@
1716
import android.widget.AdapterView;
1817
import android.widget.BaseAdapter;
1918
import android.widget.CompoundButton;
19+
import android.widget.ImageView;
2020
import android.widget.Spinner;
2121
import android.widget.TextView;
2222
import androidx.annotation.Nullable;
2323
import androidx.appcompat.widget.SwitchCompat;
2424
import com.facebook.animated.giflite.GifDecoder;
25-
import com.facebook.drawee.backends.pipeline.Fresco;
26-
import com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilder;
27-
import com.facebook.drawee.controller.BaseControllerListener;
2825
import com.facebook.drawee.drawable.ScaleTypeDrawable;
2926
import com.facebook.drawee.drawable.ScalingUtils;
30-
import com.facebook.drawee.view.SimpleDraweeView;
3127
import com.facebook.fresco.samples.showcase.BaseShowcaseFragment;
3228
import com.facebook.fresco.samples.showcase.R;
3329
import com.facebook.fresco.samples.showcase.misc.CheckerBoardDrawable;
3430
import com.facebook.fresco.samples.showcase.misc.ImageUriProvider;
31+
import com.facebook.fresco.vito.options.ImageOptions;
32+
import com.facebook.fresco.vito.view.VitoView;
3533
import com.facebook.imagepipeline.common.ImageDecodeOptions;
3634
import com.facebook.imagepipeline.common.ImageDecodeOptionsBuilder;
37-
import com.facebook.imagepipeline.image.ImageInfo;
38-
import com.facebook.imagepipeline.request.ImageRequestBuilder;
3935

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

39+
private static final String CALLER_CONTEXT = "ImageFormatGifFragment";
4340
private Entry[] mSpinnerEntries;
4441

4542
private Spinner mSpinner;
46-
private SimpleDraweeView mSimpleDraweeView;
43+
private ImageView mImageView;
4744
private @Nullable GifDecoder mGifDecoder;
4845
private boolean mAutoPlayEnabled;
46+
private boolean mIsPlaying;
4947

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

73-
mSimpleDraweeView = view.findViewById(R.id.drawee_view);
71+
mImageView = view.findViewById(R.id.image);
7472

7573
final SwitchCompat switchBackground = view.findViewById(R.id.switch_background);
7674
switchBackground.setOnCheckedChangeListener(
7775
new CompoundButton.OnCheckedChangeListener() {
7876
@Override
7977
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
80-
mSimpleDraweeView
81-
.getHierarchy()
82-
.setBackgroundImage(isChecked ? new CheckerBoardDrawable(getResources()) : null);
78+
mImageView.setBackground(isChecked ? new CheckerBoardDrawable(getResources()) : null);
8379
}
8480
});
8581
final SwitchCompat switchAutoPlay = view.findViewById(R.id.switch_autoplay);
@@ -98,9 +94,9 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
9894
new CompoundButton.OnCheckedChangeListener() {
9995
@Override
10096
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
101-
ViewGroup.LayoutParams layoutParams = mSimpleDraweeView.getLayoutParams();
97+
ViewGroup.LayoutParams layoutParams = mImageView.getLayoutParams();
10298
layoutParams.height = layoutParams.width * (isChecked ? 2 : 1);
103-
mSimpleDraweeView.setLayoutParams(layoutParams);
99+
mImageView.setLayoutParams(layoutParams);
104100
}
105101
});
106102

@@ -148,52 +144,34 @@ private void refreshAnimation() {
148144
}
149145

150146
private void setAnimationUri(Uri uri) {
151-
final PipelineDraweeControllerBuilder controllerBuilder =
152-
Fresco.newDraweeControllerBuilder()
153-
.setAutoPlayAnimations(mAutoPlayEnabled)
154-
.setOldController(mSimpleDraweeView.getController());
147+
155148
final ImageDecodeOptionsBuilder optionsBuilder =
156149
ImageDecodeOptions.newBuilder().setMaxDimensionPx(4000);
157150

158151
if (mGifDecoder != null) {
159152
optionsBuilder.setCustomImageDecoder(mGifDecoder);
160153
}
161-
162-
controllerBuilder.setImageRequest(
163-
ImageRequestBuilder.newBuilderWithSource(uri)
164-
.setImageDecodeOptions(optionsBuilder.build())
165-
.build());
154+
final ImageOptions imageOptionsAutoPlay =
155+
ImageOptions.create().autoPlay(true).imageDecodeOptions(optionsBuilder.build()).build();
156+
final ImageOptions imageOptionsPaused =
157+
imageOptionsAutoPlay.extend().autoPlay(false).overlay(getPlayOverlayDrawable()).build();
166158
if (!mAutoPlayEnabled) {
167-
controllerBuilder.setControllerListener(
168-
new BaseControllerListener<ImageInfo>() {
169-
159+
mImageView.setOnClickListener(
160+
new View.OnClickListener() {
170161
@Override
171-
public void onFinalImageSet(
172-
String id, @Nullable ImageInfo imageInfo, final @Nullable Animatable animatable) {
173-
if (animatable != null) {
174-
mSimpleDraweeView.getHierarchy().setOverlayImage(getPlayOverlayDrawable());
175-
mSimpleDraweeView.setOnClickListener(
176-
new View.OnClickListener() {
177-
@Override
178-
public void onClick(View v) {
179-
if (animatable.isRunning()) {
180-
animatable.stop();
181-
mSimpleDraweeView
182-
.getHierarchy()
183-
.setOverlayImage(getPlayOverlayDrawable());
184-
} else {
185-
animatable.start();
186-
mSimpleDraweeView.getHierarchy().setOverlayImage(null);
187-
}
188-
}
189-
});
162+
public void onClick(View v) {
163+
if (mIsPlaying) {
164+
VitoView.show(uri, imageOptionsPaused, CALLER_CONTEXT, mImageView);
165+
} else {
166+
VitoView.show(uri, imageOptionsAutoPlay, CALLER_CONTEXT, mImageView);
190167
}
168+
mIsPlaying = !mIsPlaying;
191169
}
192170
});
171+
VitoView.show(uri, imageOptionsPaused, CALLER_CONTEXT, mImageView);
193172
} else {
194-
mSimpleDraweeView.getHierarchy().setOverlayImage(null);
173+
VitoView.show(uri, imageOptionsAutoPlay, CALLER_CONTEXT, mImageView);
195174
}
196-
mSimpleDraweeView.setController(controllerBuilder.build());
197175
}
198176

199177
public Drawable getPlayOverlayDrawable() {

samples/showcase/src/main/java/com/facebook/fresco/samples/showcase/imageformat/keyframes/ImageFormatKeyframesFragment.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,22 @@
1212
import android.view.View;
1313
import android.view.ViewGroup;
1414
import android.widget.CompoundButton;
15+
import android.widget.ImageView;
1516
import androidx.annotation.Nullable;
1617
import androidx.appcompat.widget.SwitchCompat;
17-
import com.facebook.drawee.backends.pipeline.Fresco;
18-
import com.facebook.drawee.interfaces.DraweeController;
19-
import com.facebook.drawee.view.SimpleDraweeView;
2018
import com.facebook.fresco.samples.showcase.BaseShowcaseFragment;
2119
import com.facebook.fresco.samples.showcase.CustomImageFormatConfigurator;
2220
import com.facebook.fresco.samples.showcase.R;
2321
import com.facebook.fresco.samples.showcase.misc.CheckerBoardDrawable;
22+
import com.facebook.fresco.vito.options.ImageOptions;
23+
import com.facebook.fresco.vito.view.VitoView;
2424

25-
/** Fragment using a SimpleDraweeView to display a Keyframes animation */
25+
/** Fragment using a ImageView to display a Keyframes animation */
2626
public class ImageFormatKeyframesFragment extends BaseShowcaseFragment {
2727

28-
private SimpleDraweeView mSimpleDraweeView;
28+
private static final String CALLER_CONTEXT = "ImageFormatKeyframesFragment";
29+
private static final ImageOptions IMAGE_OPTIONS = ImageOptions.create().autoPlay(true).build();
30+
private ImageView mImageView;
2931

3032
@Nullable
3133
@Override
@@ -42,24 +44,16 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
4244
}
4345

4446
private void initAnimation(View view) {
45-
mSimpleDraweeView = (SimpleDraweeView) view.findViewById(R.id.drawee_view);
46-
mSimpleDraweeView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
47-
DraweeController controller =
48-
Fresco.newDraweeControllerBuilder()
49-
.setOldController(mSimpleDraweeView.getController())
50-
.setUri(sampleUris().createKeyframesUri())
51-
.setAutoPlayAnimations(true)
52-
.build();
53-
mSimpleDraweeView.setController(controller);
47+
mImageView = view.findViewById(R.id.image);
48+
mImageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
49+
VitoView.show(sampleUris().createKeyframesUri(), IMAGE_OPTIONS, CALLER_CONTEXT, mImageView);
5450

5551
final SwitchCompat switchBackground = (SwitchCompat) view.findViewById(R.id.switch_background);
5652
switchBackground.setOnCheckedChangeListener(
5753
new CompoundButton.OnCheckedChangeListener() {
5854
@Override
5955
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
60-
mSimpleDraweeView
61-
.getHierarchy()
62-
.setBackgroundImage(isChecked ? new CheckerBoardDrawable(getResources()) : null);
56+
mImageView.setBackground(isChecked ? new CheckerBoardDrawable(getResources()) : null);
6357
}
6458
});
6559
}

samples/showcase/src/main/java/com/facebook/fresco/samples/showcase/imageformat/override/ImageFormatOverrideExample.java

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,19 @@
1212
import android.view.LayoutInflater;
1313
import android.view.View;
1414
import android.view.ViewGroup;
15+
import android.widget.ImageView;
1516
import androidx.annotation.Nullable;
17+
import com.facebook.common.util.UriUtil;
1618
import com.facebook.drawee.backends.pipeline.DraweeConfig;
17-
import com.facebook.drawee.backends.pipeline.Fresco;
18-
import com.facebook.drawee.controller.AbstractDraweeController;
19-
import com.facebook.drawee.view.SimpleDraweeView;
2019
import com.facebook.fresco.samples.showcase.BaseShowcaseFragment;
2120
import com.facebook.fresco.samples.showcase.CustomImageFormatConfigurator;
2221
import com.facebook.fresco.samples.showcase.R;
2322
import com.facebook.fresco.samples.showcase.imageformat.color.ColorImageExample;
24-
import com.facebook.imagepipeline.common.ImageDecodeOptions;
23+
import com.facebook.fresco.vito.options.ImageOptions;
24+
import com.facebook.fresco.vito.view.VitoView;
2525
import com.facebook.imagepipeline.common.ImageDecodeOptionsBuilder;
2626
import com.facebook.imagepipeline.decoder.ImageDecoder;
2727
import com.facebook.imagepipeline.drawable.DrawableFactory;
28-
import com.facebook.imagepipeline.request.ImageRequestBuilder;
2928

3029
/**
3130
* Example that overrides the decoder for a given image request.
@@ -36,7 +35,14 @@
3635
*/
3736
public class ImageFormatOverrideExample extends BaseShowcaseFragment {
3837

38+
private static final String CALLER_CONTEXT = "ImageFormatOverrideExample";
39+
3940
private static final ImageDecoder CUSTOM_COLOR_DECODER = ColorImageExample.createDecoder();
41+
private static final ImageOptions IMAGE_OPTIONS =
42+
ImageOptions.create()
43+
.imageDecodeOptions(
44+
new ImageDecodeOptionsBuilder().setCustomImageDecoder(CUSTOM_COLOR_DECODER).build())
45+
.build();
4046

4147
@Nullable
4248
@Override
@@ -47,18 +53,9 @@ public View onCreateView(
4753

4854
@Override
4955
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
50-
SimpleDraweeView simpleDraweeView = (SimpleDraweeView) view.findViewById(R.id.drawee_view);
51-
52-
ImageDecodeOptions imageDecodeOptionsWithCustomDecoder =
53-
new ImageDecodeOptionsBuilder().setCustomImageDecoder(CUSTOM_COLOR_DECODER).build();
56+
ImageView imageView = view.findViewById(R.id.image);
5457

55-
AbstractDraweeController controller =
56-
Fresco.newDraweeControllerBuilder()
57-
.setImageRequest(
58-
ImageRequestBuilder.newBuilderWithResourceId(R.raw.custom_color1)
59-
.setImageDecodeOptions(imageDecodeOptionsWithCustomDecoder)
60-
.build())
61-
.build();
62-
simpleDraweeView.setController(controller);
58+
VitoView.show(
59+
UriUtil.getUriForResourceId(R.raw.custom_color1), IMAGE_OPTIONS, CALLER_CONTEXT, imageView);
6360
}
6461
}

0 commit comments

Comments
 (0)