Android CV系列 > QQ,微信空间图片点击放大拖拽,啥的一堆

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);
    }

收功!  呼~

猜你喜欢

转载自blog.csdn.net/FlyPig_Vip/article/details/82382616
今日推荐