128 lines
4.4 KiB
Java
128 lines
4.4 KiB
Java
package com.lzy.ninegrid.preview;
|
||
|
||
import android.content.Context;
|
||
import android.graphics.Bitmap;
|
||
import android.support.annotation.NonNull;
|
||
import android.support.v4.view.PagerAdapter;
|
||
import android.view.LayoutInflater;
|
||
import android.view.View;
|
||
import android.view.ViewGroup;
|
||
import android.widget.ImageView;
|
||
import android.widget.ProgressBar;
|
||
|
||
import com.lzy.ninegrid.ImageInfo;
|
||
import com.lzy.ninegrid.NineGridView;
|
||
import com.lzy.ninegrid.R;
|
||
|
||
import java.util.List;
|
||
|
||
import uk.co.senab.photoview.PhotoView;
|
||
import uk.co.senab.photoview.PhotoViewAttacher;
|
||
|
||
/**
|
||
* ================================================
|
||
* 作 者:廖子尧
|
||
* 版 本:1.0
|
||
* 创建日期:2016/3/21
|
||
* 描 述:
|
||
* 修订历史:
|
||
* ================================================
|
||
*/
|
||
public class ImagePreviewAdapter extends PagerAdapter implements PhotoViewAttacher.OnPhotoTapListener {
|
||
|
||
private List<ImageInfo> imageInfo;
|
||
private Context context;
|
||
private View currentView;
|
||
|
||
public ImagePreviewAdapter(Context context, @NonNull List<ImageInfo> imageInfo) {
|
||
super();
|
||
this.imageInfo = imageInfo;
|
||
this.context = context;
|
||
}
|
||
|
||
@Override
|
||
public int getCount() {
|
||
return imageInfo.size();
|
||
}
|
||
|
||
@Override
|
||
public boolean isViewFromObject(View view, Object object) {
|
||
return view == object;
|
||
}
|
||
|
||
@Override
|
||
public void setPrimaryItem(ViewGroup container, int position, Object object) {
|
||
super.setPrimaryItem(container, position, object);
|
||
currentView = (View) object;
|
||
}
|
||
|
||
public View getPrimaryItem() {
|
||
return currentView;
|
||
}
|
||
|
||
public ImageView getPrimaryImageView() {
|
||
return (ImageView) currentView.findViewById(R.id.pv);
|
||
}
|
||
|
||
@Override
|
||
public Object instantiateItem(ViewGroup container, int position) {
|
||
View view = LayoutInflater.from(context).inflate(R.layout.item_photoview, container, false);
|
||
|
||
final ProgressBar pb = (ProgressBar) view.findViewById(R.id.pb);
|
||
final PhotoView imageView = (PhotoView) view.findViewById(R.id.pv);
|
||
|
||
ImageInfo info = this.imageInfo.get(position);
|
||
imageView.setOnPhotoTapListener(this);
|
||
showExcessPic(info, imageView);
|
||
|
||
//如果需要加载的loading,需要自己改写,不能使用这个方法
|
||
NineGridView.getImageLoader().onDisplayImage(view.getContext(), imageView, info.bigImageUrl);
|
||
|
||
// pb.setVisibility(View.VISIBLE);
|
||
// Glide.with(context).load(info.bigImageUrl)//
|
||
// .placeholder(R.drawable.ic_default_image)//
|
||
// .error(R.drawable.ic_default_image)//
|
||
// .diskCacheStrategy(DiskCacheStrategy.ALL)//
|
||
// .listener(new RequestListener<String, GlideDrawable>() {
|
||
// @Override
|
||
// public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
|
||
// pb.setVisibility(View.GONE);
|
||
// return false;
|
||
// }
|
||
//
|
||
// @Override
|
||
// public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
|
||
// pb.setVisibility(View.GONE);
|
||
// return false;
|
||
// }
|
||
// }).into(imageView);
|
||
|
||
container.addView(view);
|
||
return view;
|
||
}
|
||
|
||
/** 展示过度图片 */
|
||
private void showExcessPic(ImageInfo imageInfo, PhotoView imageView) {
|
||
//先获取大图的缓存图片
|
||
Bitmap cacheImage = NineGridView.getImageLoader().getCacheImage(imageInfo.bigImageUrl);
|
||
//如果大图的缓存不存在,在获取小图的缓存
|
||
if (cacheImage == null) cacheImage = NineGridView.getImageLoader().getCacheImage(imageInfo.thumbnailUrl);
|
||
//如果没有任何缓存,使用默认图片,否者使用缓存
|
||
if (cacheImage == null) {
|
||
imageView.setImageResource(R.drawable.ic_default_color);
|
||
} else {
|
||
imageView.setImageBitmap(cacheImage);
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void destroyItem(ViewGroup container, int position, Object object) {
|
||
container.removeView((View) object);
|
||
}
|
||
|
||
/** 单击屏幕关闭 */
|
||
@Override
|
||
public void onPhotoTap(View view, float x, float y) {
|
||
((ImagePreviewActivity) context).finishActivityAnim();
|
||
}
|
||
} |