官网,官网使用Kotlin写的,刚开始没有找到Java版本的相关资料,简单解释一下
点击多张图片(类似微信朋友圈查看图片)官网
PhotoViewer
.setData(图片链接List<String>)
.setCurrentPage(现在是哪页)
.setImgContainer(img的容器 rv/gv/lv)
.setShowImageViewInterface(object : PhotoViewer.ShowImageViewInterface {
override fun show(iv: ImageView, url: String) {
// 设置自己加载图片的框架来加载图片
Glide.with(iv.context).load(url).into(iv)
}
})
.setOnLongClickListener(object : OnLongClickListener{
override fun onLongClick(view: View) {
// 长按图片的逻辑
}
})
.start(this)
Java版本使用
PhotoViewer.INSTANCE
//设置图片数据
.setData(imagesUris)
//设置当前位置
.setCurrentPage(index)
//设置图片控件容器
//他需要容器的目的是
//显示缩放动画
.setImgContainer(rv)
//设置图片加载回调
.setShowImageViewInterface((imageView, url) -> {
//使用Glide显示图片
Glide.with(getMainActivity())
.load(url)
.into(imageView);
})
//启动界面
.start(this);
只点击一张图片时(类似点击查看头像)
PhotoViewer
.setClickSingleImg(url, iv) //因为本框架不参与加载图片,所以还是要写回调方法
.setShowImageViewInterface(object : PhotoViewer.ShowImageViewInterface {
override fun show(iv: ImageView, url: String) {
Glide.with(iv.context).load(url).into(iv)
}
})
.start(this)
Java版本使用
PhotoViewer.INSTANCE
.setClickSingleImg(imageUris,rv)
.setShowImageViewInterface((imageView, url) -> {
//使用Glide显示图片
Glide.with(AuditInvoiceDetailActivity.this)
.load(imageUris)
.into(imageView);
}).start(this);
添加依赖
//类似微信图片预览框架
//https://github.com/wanglu1209/PhotoViewer
implementation 'com.github.wanglu1209:PhotoViewer:0.50'
PhotoViewer流程比较多,简单介绍下在单层RecyclerView中使用
自定义监听
/**
* 动态监听器
*/
public interface ImageListener {
/**
* 点击了动态图片回调
*
* @param rv
* @param imageUris
* @param index
*/
void onImageClick(ImageView rv, String imageUris);
}
设置监听
/**
* 图片适配器
*/
public class ImageCAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
/**
* 动态监听器
*/
private final ImageListener imageListener;
/**
* 构造方法
*
* @param layoutResId
*/
public ImageCAdapter(int layoutResId,ImageListener imageListener) {
super(layoutResId);
this.imageListener=imageListener;
}
/**
* 绑定数据
*
* @param helper
* @param data
*/
@Override
protected void convert(@NonNull BaseViewHolder helper, String data) {
//找图片控件
ImageView iv_banner = helper.getView(R.id.iv_banner);
iv_banner.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imageListener.onImageClick(iv_banner,data);
}
});
//显示图片
ImageUtil.show(mContext, iv_banner, data);
}
}
回调处理
@Override
public void onImageClick(ImageView rv, String imageUris) {
PhotoViewer.INSTANCE
.setClickSingleImg(imageUris,rv)
.setShowImageViewInterface((imageView, url) -> {
//使用Glide显示图片
Glide.with(AuditInvoiceDetailActivity.this)
.load(imageUris)
.into(imageView);
}).start(this);
}
预览单张图片
自定义监听和之前的一样
/**
* 动态监听器
*/
public interface ImageListener {
/**
* 点击了动态图片回调
*
* @param rv
* @param imageUris
* @param index
*/
void onImageClick(ImageView rv, String imageUris);
}
Activity中创建ImageListener
ImageListener imageListener;
实例化对象
imageListener=this;
设置监听
iv是ImageView控件,第二个变量是图片地址
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imageListener.onImageClick(iv,"");
}
});
回调处理
@Override
public void onImageClick(ImageView rv, String imageUris, int index) {
PhotoViewer.INSTANCE
.setClickSingleImg(imageUris,rv)
.setShowImageViewInterface((imageView, url) -> {
//使用Glide显示图片
Glide.with(QuestionMarkActivity.this)
.load(imageUris)
.into(imageView);
}).start(this);
}