package com.tejia.lijin.app.ui;
|
|
import android.app.Activity;
|
import android.content.DialogInterface;
|
import androidx.viewpager.widget.PagerAdapter;
|
import android.view.Gravity;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
|
import com.bumptech.glide.Glide;
|
import com.github.chrisbanes.photoview.OnOutsidePhotoTapListener;
|
import com.github.chrisbanes.photoview.OnPhotoTapListener;
|
import com.github.chrisbanes.photoview.PhotoView;
|
import com.wpc.library.util.SystemCommon;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.entity.common.ImageShowEntity;
|
import com.tejia.lijin.app.ui.dialog.SaveImgDialog;
|
import com.tejia.lijin.app.ui.trends.BigImageActivity;
|
import com.tejia.lijin.app.util.downutil.StringUtils;
|
|
import java.io.File;
|
import java.util.List;
|
|
|
public class ImageShowAdapter extends PagerAdapter {
|
|
private LayoutInflater mLayoutInflater;
|
private List<ImageShowEntity> mPhotoUrlList;
|
|
private OnFinishCallBack mOnFinishCallBack;
|
private Activity mContext;
|
|
private ISaveImage saveImageListener;
|
|
public ImageShowAdapter(BigImageActivity context, List<ImageShowEntity> photoUrlList, ISaveImage saveImageListener) {
|
mLayoutInflater = LayoutInflater.from(context);
|
this.mContext = context;
|
mPhotoUrlList = photoUrlList;
|
this.saveImageListener = saveImageListener;
|
}
|
|
@Override
|
public int getCount() {
|
return mPhotoUrlList == null ? 0 : mPhotoUrlList.size();
|
}
|
|
@Override
|
public boolean isViewFromObject(View view, Object object) {
|
return view == object;
|
}
|
|
@Override
|
public Object instantiateItem(ViewGroup container, int position) {
|
View view = mLayoutInflater.inflate(R.layout.item_trend_image_big, container, false);
|
final ImageShowEntity photo = mPhotoUrlList.get(position);
|
final PhotoView iv = view.findViewById(R.id.detail_icon_iv);
|
int width = (int) SystemCommon.getScreenWidth(mContext);
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(width,
|
ViewGroup.LayoutParams.MATCH_PARENT);
|
params.gravity = Gravity.CENTER;
|
iv.setLayoutParams(params);
|
if (!StringUtils.isNullOrEmpty(photo.getFilePath())) {
|
Glide.with(mContext).load(new File(photo.getFilePath())).into(iv);
|
} else {
|
Glide.with(mContext).load(photo.getUrl()).into(iv);
|
}
|
|
iv.setOnPhotoTapListener(new OnPhotoTapListener() {
|
@Override
|
public void onPhotoTap(ImageView view, float x, float y) {
|
if (mOnFinishCallBack != null) {
|
mOnFinishCallBack.finishShowPic();
|
}
|
}
|
});
|
|
iv.setOnOutsidePhotoTapListener(new OnOutsidePhotoTapListener() {
|
@Override
|
public void onOutsidePhotoTap(ImageView imageView) {
|
if (mOnFinishCallBack != null) {
|
mOnFinishCallBack.finishShowPic();
|
}
|
}
|
});
|
|
iv.setOnLongClickListener(new View.OnLongClickListener() {
|
@Override
|
public boolean onLongClick(View v) {
|
SaveImgDialog.Builder builder = new SaveImgDialog.Builder(mContext);
|
builder.setNegativeButton("", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
}).setPositiveButton("", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
if (saveImageListener != null)
|
saveImageListener.saveImage(photo);
|
dialog.dismiss();
|
}
|
}).create().show();
|
return false;
|
}
|
});
|
|
container.addView(view);
|
return view;
|
}
|
|
@Override
|
public void destroyItem(ViewGroup container, int position, Object object) {
|
container.removeView((View) object);
|
}
|
|
public interface OnFinishCallBack {
|
void finishShowPic();
|
}
|
|
public void setOnFinishCallBack(OnFinishCallBack onFinishCallBack) {
|
mOnFinishCallBack = onFinishCallBack;
|
}
|
|
public interface ISaveImage {
|
public void saveImage(ImageShowEntity entity);
|
}
|
}
|