7
7
8
8
package com .facebook .fresco .samples .showcase .imageformat .gif ;
9
9
10
- import android .graphics .drawable .Animatable ;
11
10
import android .graphics .drawable .Drawable ;
12
11
import android .net .Uri ;
13
12
import android .os .Bundle ;
17
16
import android .widget .AdapterView ;
18
17
import android .widget .BaseAdapter ;
19
18
import android .widget .CompoundButton ;
19
+ import android .widget .ImageView ;
20
20
import android .widget .Spinner ;
21
21
import android .widget .TextView ;
22
22
import androidx .annotation .Nullable ;
23
23
import androidx .appcompat .widget .SwitchCompat ;
24
24
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 ;
28
25
import com .facebook .drawee .drawable .ScaleTypeDrawable ;
29
26
import com .facebook .drawee .drawable .ScalingUtils ;
30
- import com .facebook .drawee .view .SimpleDraweeView ;
31
27
import com .facebook .fresco .samples .showcase .BaseShowcaseFragment ;
32
28
import com .facebook .fresco .samples .showcase .R ;
33
29
import com .facebook .fresco .samples .showcase .misc .CheckerBoardDrawable ;
34
30
import com .facebook .fresco .samples .showcase .misc .ImageUriProvider ;
31
+ import com .facebook .fresco .vito .options .ImageOptions ;
32
+ import com .facebook .fresco .vito .view .VitoView ;
35
33
import com .facebook .imagepipeline .common .ImageDecodeOptions ;
36
34
import com .facebook .imagepipeline .common .ImageDecodeOptionsBuilder ;
37
- import com .facebook .imagepipeline .image .ImageInfo ;
38
- import com .facebook .imagepipeline .request .ImageRequestBuilder ;
39
35
40
36
/** GIF example that illustrates how to display a simple GIF file */
41
37
public class ImageFormatGifFragment extends BaseShowcaseFragment {
42
38
39
+ private static final String CALLER_CONTEXT = "ImageFormatGifFragment" ;
43
40
private Entry [] mSpinnerEntries ;
44
41
45
42
private Spinner mSpinner ;
46
- private SimpleDraweeView mSimpleDraweeView ;
43
+ private ImageView mImageView ;
47
44
private @ Nullable GifDecoder mGifDecoder ;
48
45
private boolean mAutoPlayEnabled ;
46
+ private boolean mIsPlaying ;
49
47
50
48
@ Nullable
51
49
@ Override
@@ -70,16 +68,14 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
70
68
sampleUris ().createGifUri (ImageUriProvider .ImageSize .L )),
71
69
};
72
70
73
- mSimpleDraweeView = view .findViewById (R .id .drawee_view );
71
+ mImageView = view .findViewById (R .id .image );
74
72
75
73
final SwitchCompat switchBackground = view .findViewById (R .id .switch_background );
76
74
switchBackground .setOnCheckedChangeListener (
77
75
new CompoundButton .OnCheckedChangeListener () {
78
76
@ Override
79
77
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 );
83
79
}
84
80
});
85
81
final SwitchCompat switchAutoPlay = view .findViewById (R .id .switch_autoplay );
@@ -98,9 +94,9 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
98
94
new CompoundButton .OnCheckedChangeListener () {
99
95
@ Override
100
96
public void onCheckedChanged (CompoundButton buttonView , boolean isChecked ) {
101
- ViewGroup .LayoutParams layoutParams = mSimpleDraweeView .getLayoutParams ();
97
+ ViewGroup .LayoutParams layoutParams = mImageView .getLayoutParams ();
102
98
layoutParams .height = layoutParams .width * (isChecked ? 2 : 1 );
103
- mSimpleDraweeView .setLayoutParams (layoutParams );
99
+ mImageView .setLayoutParams (layoutParams );
104
100
}
105
101
});
106
102
@@ -148,52 +144,34 @@ private void refreshAnimation() {
148
144
}
149
145
150
146
private void setAnimationUri (Uri uri ) {
151
- final PipelineDraweeControllerBuilder controllerBuilder =
152
- Fresco .newDraweeControllerBuilder ()
153
- .setAutoPlayAnimations (mAutoPlayEnabled )
154
- .setOldController (mSimpleDraweeView .getController ());
147
+
155
148
final ImageDecodeOptionsBuilder optionsBuilder =
156
149
ImageDecodeOptions .newBuilder ().setMaxDimensionPx (4000 );
157
150
158
151
if (mGifDecoder != null ) {
159
152
optionsBuilder .setCustomImageDecoder (mGifDecoder );
160
153
}
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 ();
166
158
if (!mAutoPlayEnabled ) {
167
- controllerBuilder .setControllerListener (
168
- new BaseControllerListener <ImageInfo >() {
169
-
159
+ mImageView .setOnClickListener (
160
+ new View .OnClickListener () {
170
161
@ 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 );
190
167
}
168
+ mIsPlaying = !mIsPlaying ;
191
169
}
192
170
});
171
+ VitoView .show (uri , imageOptionsPaused , CALLER_CONTEXT , mImageView );
193
172
} else {
194
- mSimpleDraweeView . getHierarchy (). setOverlayImage ( null );
173
+ VitoView . show ( uri , imageOptionsAutoPlay , CALLER_CONTEXT , mImageView );
195
174
}
196
- mSimpleDraweeView .setController (controllerBuilder .build ());
197
175
}
198
176
199
177
public Drawable getPlayOverlayDrawable () {
0 commit comments