package com.llf.basemodel.image; import android.app.Activity; import android.content.Context; import android.support.v4.view.PagerAdapter; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ProgressBar; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; import com.llf.basemodel.R; import java.util.ArrayList; import java.util.List; import uk.co.senab.photoview.PhotoView; import uk.co.senab.photoview.PhotoViewAttacher; /** * Created by llf on 2016/10/20. */ public class ImageAdapter extends PagerAdapter { private List<String> datas = new ArrayList<>(); private LayoutInflater inflater; private Context context; public ImageAdapter(Context context, List<String> datas) { this.context = context; this.inflater = LayoutInflater.from(context); this.datas = datas; } @Override public int getCount() { if (datas == null) return 0; return datas.size(); } @Override public Object instantiateItem(ViewGroup container, final int position) { View view = inflater.inflate(R.layout.item_pager_image, container, false); if (view != null) { final PhotoView imageView = (PhotoView) view.findViewById(R.id.image); final ProgressBar loading = new ProgressBar(context); FrameLayout.LayoutParams loadingLayoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); loadingLayoutParams.gravity = Gravity.CENTER; loading.setLayoutParams(loadingLayoutParams); ((FrameLayout) view).addView(loading); final String imgurl = datas.get(position); loading.setVisibility(View.VISIBLE); Glide.with(context).load(imgurl) .diskCacheStrategy(DiskCacheStrategy.ALL) .error(R.drawable.ic_empty_picture) .thumbnail(0.1f) .listener(new RequestListener<String, GlideDrawable>() { @Override public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { loading.setVisibility(View.GONE); return false; } @Override public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { loading.setVisibility(View.GONE); return false; } }) .into(imageView); imageView.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() { @Override public void onPhotoTap(View view, float x, float y) { ((Activity) context).finish(); } }); container.addView(view, 0); } return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public boolean isViewFromObject(View view, Object object) { return view.equals(object); } }