https://gitee.com/byc4426/ImageWatcher
https://github.com/iielse/ImageWatcher
1.
maven { url "https://jitpack.io" }
implementation 'byc.imagewatcher:imagewatcher:1.0.0'
//Glide
compile 'com.github.bumptech.glide:glide:3.7.0'
2.MainXMl
<ImageView
android:id="@+id/image"
android:src="@mipmap/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
3.MainAc
private ImageView image;
private List<ImageView> imageGroupList;
private String imagePath="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=415293130,2419074865&fm=27&gp=0.jpg";
private String imagePath1="https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3536314877,3587590266&fm=27&gp=0.jpg";
private List<String> urlList;
private ImageWatcher imageWatcher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
imageGroupList=new ArrayList<>();
for (int i = 0; i < 10; i++) {
imageGroupList.add(image);
}
urlList=new ArrayList<>();
for (int i = 0; i < 5; i++) {
urlList.add(imagePath);
urlList.add(imagePath1);
}
imageWatcher = ImageWatcher.Helper.with(this) // 一般来讲, ImageWatcher 需要占据全屏的位置
// .setTranslucentStatus(!isTranslucentStatus ? Utils.calcStatusBarHeight(this) : 0) // 如果是透明状态栏,你需要给ImageWatcher标记 一个偏移值,以修正点击ImageView查看的启动动画的Y轴起点的不正确
.setErrorImageRes(R.mipmap.error_picture) // 配置error图标 如果不介意使用lib自带的图标,并不一定要调用这个API
.setOnPictureLongPressListener(this) // 长按图片的回调,你可以显示一个框继续提供一些复制,发送等功能
.setLoader(new ImageWatcher.Loader() {//调用show方法前,请先调用setLoader 给ImageWatcher提供加载图片的实现
@Override
public void load(Context context, String url, final ImageWatcher.LoadCallback lc) {
Glide.with(context).load(url).asBitmap().into(new SimpleTarget<Bitmap>() {
@Override
public void onLoadStarted(Drawable placeholder) {
lc.onLoadStarted(placeholder);
}
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
lc.onResourceReady(resource);
}
@Override
public void onLoadFailed(Exception e, Drawable errorDrawable) {
lc.onLoadFailed(errorDrawable);
}
});
}
})
.create();
}
private void initView() {
image = (ImageView) findViewById(R.id.image);
image.setOnClickListener(this);
}
@Override
public void onPictureLongPress(ImageView v, String url, int pos) {
}
@Override
public void onClick(View v) {
/**
* @param i 被点击的ImageView
* @param imageGroupList 被点击的ImageView的所在列表,加载图片时会提前展示列表中已经下载完成的thumb图片
* @param urlList 被加载的图片url列表,数量必须大于等于 imageGroupList.size。 且顺序应当和imageGroupList保持一致
*/
imageWatcher.show(image,imageGroupList,urlList);
}
收功! 呼~