# 快速、轻量级自定义图库选择库(仿微信图库选择界面)

写过很多的项目,几乎我接触的每一个项目都需要用到功能就是图库选择。于是我很久以前就思考是不是可以把对图库选择做一些封装,然后,我开始对微信的图库选择开始做研究,这才有了album这个库的第一个版本,我以后还会对这个库进行持续的更新。这是我封装的第一个库,先上效果图吧(注意这个不是微信截图,是软件真实运行截图)。

一、图片展示列表

这里写图片描述
这个界面我原本不打算放到album库中的,因为它好像和图库并没有什么关联,它只是一个album的使用实例。但是我回忆了一下,我做过的项目,对这样的图库添加和都特别常见,所以我把它也放了进来,这里点击每一张图片可以进入列表全图查看,点击对号可以取消。这个界面使用album库除了实现简单外,还有一个特点就是不用考虑滑动冲突的问题,这里我用的是一个解决了滑动冲突的gradview。

    //图片选择回调处理
    private void selectImage() {
        //跳转到自定义图库选择
        if (imageSelect_01.size() >= maxNum + 1) return;
        photoConfigure = new PhotoConfigure();
        photoConfigure.setCamera(true);
        photoConfigure.setNum(maxNum - imageSelect_01.size());
        PhotoWallActivity.openImageSelecter(TestActivity.this, photoConfigure, new PhotoWallActivity.OnHandlerResultCallback() {
            @Override
            public void onHandlerSuccess(List<PhotoBean> resultList) {
                TestActivity.this.resultList.addAll(resultList);
                //返回的选中照片数据集合
                for (PhotoBean url : resultList) {
                    imageSelect_01.add(imageSelect_01.size() - 1, url.getImage_url());
                }
                adapter.notifyDataSetChanged();
            }
        });
    }

这里是调用album库的基本使用方法,PhotoConfigure中封装的是启动album库的基本配置信息:是否使用相机、是否单选、需要选择的图片数量等。对于回调的处理,都返回到resultList中,在使用的过程中,你只需要对resultList处理即可。

二、手机图库选择列表

这里写图片描述
启动图库选择后首先进入的是图库选择界面,图片选择支持拍照、分相册选择、所有图库选择。这里图库加载缓存全都使用glide加载,所以可以获取媲美微信的图库加载流畅度。这个图库选择除了可以这些基本功能外,还有很多对细节的优化。
1.图片选中后,添加透明灰色蒙版。
这里写图片描述
2.完成按钮状态颜色的变化,按钮为选择、选中状态数量和颜色的不一样。
3.相册切换动画、弹出方式。
这里写图片描述
由于截图无法展示ablum库的动画效果,建议运行后自行体验。整个项目对图库的选中和未选择状态都做了缓存。不论你是在那个相册、或者预览界面、只要选过这个就会它的状态进行记录和保存,这里的逻辑不难,但是还是挺繁琐的。

三、图片轮播。

这里写图片描述
这个界面有很多的手势操作:
1、左右滑动可以翻页。
2、点击图片,可以隐藏状态栏、标题栏和下放选择框。再次点击图片可以显示。动画效果与微信类似。
3、两个手指向外滑动,图片放大,手指向内画,图片缩小。
4、如果在图片放大的状态下左右滑动,是移动图片,此时图片可以向四个方向移动。如果不是在放大状态,左右滑动翻页。
5、图片达到最大或者最小缩放倍数后,分别有瞬间还原的动画效果。

项目中的图片轮播和照片墙界面都可以单独使用,album的状态栏和标题栏的颜色都可以在color中修改。不受主要项目的影响。这个版本的相机拍照目前还是调用系统相机拍照。最后放上album的下载地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章