1
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user