Files
HouseProperty/ninegridview/src/main/java/com/lzy/ninegrid/preview/ImagePreviewAdapter.java
jinyuer fa1413fc30 1
2020-08-11 14:48:10 +08:00

128 lines
4.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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();
}
}