11
11
import android .graphics .Point ;
12
12
import android .graphics .drawable .Drawable ;
13
13
import android .os .Bundle ;
14
- import android .os .Handler ;
15
14
import android .support .annotation .Nullable ;
16
15
import android .support .v4 .view .ViewPager ;
17
16
import android .util .DisplayMetrics ;
22
21
import android .widget .FrameLayout ;
23
22
import android .widget .ImageView ;
24
23
import android .widget .TextView ;
24
+ import android .widget .Toast ;
25
25
26
26
import com .bumptech .glide .Glide ;
27
27
import com .bumptech .glide .RequestBuilder ;
28
- import com .bumptech .glide .request .target .SimpleTarget ;
28
+ import com .bumptech .glide .request .target .ImageViewTarget ;
29
29
import com .bumptech .glide .request .transition .Transition ;
30
30
import com .liyi .viewer .ImageDefine ;
31
31
import com .liyi .viewer .ImageViewer ;
@@ -54,8 +54,6 @@ public class ImagePreviewActivity extends Activity implements IImagePreview {
54
54
private int mIndexPos ;
55
55
// Determine if the first picture you need to display is loaded
56
56
private boolean isBeginLoaded ;
57
- // Determine if the animation of the picture is over
58
- private boolean isShowAnimEnd ;
59
57
60
58
@ Override
61
59
protected void onCreate (@ Nullable Bundle savedInstanceState ) {
@@ -81,9 +79,7 @@ public void addListener() {
81
79
viewpager .addOnPageChangeListener (new ViewPager .OnPageChangeListener () {
82
80
@ Override
83
81
public void onPageScrolled (int position , float positionOffset , int positionOffsetPixels ) {
84
- if (iv_show .getVisibility () == View .VISIBLE ) {
85
- iv_show .setVisibility (View .GONE );
86
- }
82
+
87
83
}
88
84
89
85
@ Override
@@ -120,7 +116,6 @@ public void handleIntent(Intent intent) {
120
116
mScreenSize = getScreenSize (this );
121
117
mCurViewData = mViewDataList .get (mBeginIndex );
122
118
isBeginLoaded = false ;
123
- isShowAnimEnd = false ;
124
119
125
120
if (mPhotoViewList == null ) {
126
121
mPhotoViewList = new ArrayList <PhotoView >();
@@ -139,23 +134,30 @@ public void onViewTap(View view, float x, float y) {
139
134
}
140
135
viewpager .setAdapter (new SimpleAdapter (mPhotoViewList ));
141
136
viewpager .setCurrentItem (mBeginIndex );
137
+ viewpager .setVisibility (View .GONE );
142
138
143
139
iv_show .setLayoutParams (new FrameLayout .LayoutParams ((int ) mCurViewData .width , (int ) mCurViewData .height ));
144
140
iv_show .setX (mCurViewData .x );
145
141
iv_show .setY (mCurViewData .y );
146
- loadImage ( mBeginIndex , mImageList . get ( mBeginIndex ), iv_show , true );
142
+ iv_show . setVisibility ( View . GONE );
147
143
148
144
tv_index .setText ((mBeginIndex + 1 ) + "/" + mImageList .size ());
149
145
FrameLayout .LayoutParams lp = (FrameLayout .LayoutParams ) tv_index .getLayoutParams ();
150
146
lp .gravity = mIndexPos ;
151
147
tv_index .setLayoutParams (lp );
152
148
153
- new Handler ().postDelayed (new Runnable () {
154
- @ Override
155
- public void run () {
156
- fullScreen ();
157
- }
158
- }, 200 );
149
+ if (!isBeginLoaded ) {
150
+ loadImage (mBeginIndex , mImageList .get (mBeginIndex ), iv_show , true );
151
+ } else {
152
+ iv_show .setImageDrawable (mPhotoViewList .get (mBeginIndex ).getDrawable ());
153
+ fullScreen ();
154
+ }
155
+ // new Handler().postDelayed(new Runnable() {
156
+ // @Override
157
+ // public void run() {
158
+ // fullScreen();
159
+ // }
160
+ // }, 200);
159
161
}
160
162
161
163
@ Override
@@ -211,10 +213,7 @@ public void onAnimationStart(Animator animation) {
211
213
public void onAnimationEnd (Animator animation ) {
212
214
viewpager .setVisibility (View .VISIBLE );
213
215
tv_index .setVisibility (View .VISIBLE );
214
- isShowAnimEnd = true ;
215
- if (isBeginLoaded ) {
216
- iv_show .setVisibility (View .GONE );
217
- }
216
+ iv_show .setVisibility (View .GONE );
218
217
}
219
218
220
219
@ Override
@@ -313,17 +312,45 @@ private Point getScreenSize(Context context) {
313
312
314
313
private void loadImage (final int index , Object src , final ImageView view , final boolean isShow ) {
315
314
final RequestBuilder builder = Glide .with (this ).asBitmap ().load (src );
316
- if (ImageViewer .Options != null ) {
317
- builder .apply (ImageViewer .Options );
315
+ if (ImageViewer .getOptions () != null ) {
316
+ builder .apply (ImageViewer .getOptions () );
318
317
}
319
- builder .into (new SimpleTarget <Bitmap >() {
318
+ builder .into (new ImageViewTarget <Bitmap >(view ) {
319
+ @ Override
320
+ protected void setResource (@ Nullable Bitmap resource ) {
321
+
322
+ }
323
+
324
+ @ Override
325
+ public void onLoadFailed (@ Nullable Drawable errorDrawable ) {
326
+ super .onLoadFailed (errorDrawable );
327
+ if (index == mBeginIndex ) {
328
+ if (isShow ) {
329
+ if (!isBeginLoaded ) {
330
+ Glide .with (ImagePreviewActivity .this ).clear (mPhotoViewList .get (index ));
331
+ mPhotoViewList .get (index ).setImageDrawable (errorDrawable );
332
+ }
333
+ fullScreen ();
334
+ } else {
335
+ isBeginLoaded = true ;
336
+ }
337
+ }
338
+ Toast .makeText (ImagePreviewActivity .this , "图片加载失败" , Toast .LENGTH_SHORT ).show ();
339
+ }
340
+
320
341
@ Override
321
- public void onResourceReady (Bitmap resource , Transition transition ) {
342
+ public void onResourceReady (Bitmap resource , @ Nullable Transition transition ) {
343
+ super .onResourceReady (resource , transition );
322
344
view .setImageBitmap (resource );
323
- if (!isShow && index == mBeginIndex ) {
324
- isBeginLoaded = true ;
325
- if (isShowAnimEnd ) {
326
- iv_show .setVisibility (View .GONE );
345
+ if (index == mBeginIndex ) {
346
+ if (isShow ) {
347
+ if (!isBeginLoaded ) {
348
+ Glide .with (ImagePreviewActivity .this ).clear (mPhotoViewList .get (index ));
349
+ mPhotoViewList .get (index ).setImageBitmap (resource );
350
+ }
351
+ fullScreen ();
352
+ } else {
353
+ isBeginLoaded = true ;
327
354
}
328
355
}
329
356
}
0 commit comments