图片选择器ImagePicker

图片选择器ImagePicker

ImagePicker是一个Android版本的图片视频选择组件。
GitHub仓库地址

引入

gradle

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

implementation 'com.github.DL-ZhangTeng:ImagePicker:1.5.0'
//使用的三方
implementation 'com.github.bumptech.glide:glide:4.12.0'
implementation 'com.yalantis:ucrop:2.2.0'
implementation 'com.github.DL-ZhangTeng:RequestPermission:1.3.0'
implementation 'com.github.DL-ZhangTeng:Utils:2.2.0'

效果图

图片选择器1
图片选择器2
图片选择器3

属性

属性名描述
multiSelect是否单选,默认true
maxImageSelectable多选时最多选多少张,默认9
maxVideoSelectable多选时最多选多少个,默认1
isShowCamera是否在第一格显示拍照录制,默认true
filePath图片剪裁保持地址,默认"/" + BuildConfig.APPLICATION_ID + “/imagePicker/ImagePickerPictures”
provider文件提供者,默认BuildConfig.APPLICATION_ID + “.FileProvider”
pathList图片保持List
isVideoPicker是否可选择视频,默认true
isImagePicker是否可选择图片,默认true
isMirror摄像拍照是否镜像
maxWidth最大图片宽度,默认1920
maxHeight最大图片高度,默认1920
maxImageSize图片大小,默认15M
maxVideoLength视频长度,默认15000ms
maxVideoSize视频大小,默认45M
imagePickerType弹出类型,默认图片选择器
isCrop是否开启剪裁,默认false
cropAspectRatio剪裁比率(w/h),默认0
pickerThemeColorRes选择器主题色
cropThemeColorRes剪裁器主题色
pickerTitleColorRes选择器标题色
cropTitleColorRes剪裁器标题色
pickerBackRes选择器返回按钮
pickerFolderRes选择器文件夹选择下拉图标

使用

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImagePickerConfig imagePickerConfig = new ImagePickerConfig.Builder()
                .provider(getPackageName() + ".FileProvider")
                .imageLoader(new GlideImageLoader()) //图片加载器
                .iHandlerCallBack(new HandlerCallBack())    //图片选择器生命周期监听(直接打开摄像头时无效)
                .multiSelect(true)                 //是否多选
                .isShowCamera(true)
                .isVideoPicker(true)              //是否选择视频 默认false
                .isImagePicker(true)
                .imagePickerType(ImagePickerEnum.PHOTO_PICKER) //选择器打开类型
                .isMirror(false)                              //是否旋转镜头
                .maxImageSelectable(9)                        //图片可选择数
                .maxHeight(1920)                              //图片最大高度
                .maxWidth(1920)                               //图片最大宽度
                .maxImageSize(15)                             //图片最大大小Mb
                .maxVideoLength(5 * 1000)
                .maxVideoSize(180)
                .isCrop(true)
                .pathList(new ArrayList<>())
                .pickerThemeColorRes(R.color.image_picker_white)
                .pickerTitleColorRes(R.color.image_picker_text_black)
                .cropThemeColorRes(R.color.image_picker_white)
                .cropTitleColorRes(R.color.image_picker_text_black)
                .pickerBackRes(R.mipmap.image_picker_back_black)
                .pickerFolderRes(R.mipmap.image_picker_folder_black)
                .build();

        findViewById(R.id.iv).setOnClickListener(v -> {
//            imagePickerConfig.getPathList().clear();
            ImagePickerOpen.getInstance()
                    .setImagePickerConfig(imagePickerConfig)
                    .pathList(new ArrayList<>())
                    .open(this, 100);
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 100 && data != null) {
            List<String> paths = ImagePickerOpen.getResultData(this, resultCode, data);
            ImagePickerOpen.getInstance().getImagePickerConfig().getImageLoader().loadImage(this, findViewById(R.id.iv), paths.get(0));
        }
    }
}
public class HandlerCallBack implements IHandlerCallBack<ImageInfo> {
    private String TAG = "---ImagePicker---";
    List<ImageInfo> photoList = new ArrayList<>();

    @Override
    public void onStart() {
        Log.i(TAG, "onStart: 开启");
    }

    @Override
    public void onSuccess(List<ImageInfo> photoList) {
        this.photoList = photoList;
        Log.i(TAG, "onSuccess: 返回数据");
    }

    @Override
    public void onCancel() {
        Log.i(TAG, "onCancel: 取消");
    }

    @Override
    public void onFinish(List<ImageInfo> selectImage) {

    }

    @Override
    public void onError() {
        Log.i(TAG, "onError: 出错");
    }
}

混淆

-keep public class com.zhangteng.**.*{ *; }

历史版本

版本更新更新时间
v1.5.0权限请求被拒绝再次请求权限跳转设置页面2023/5/3 at 20:27
v1.4.2Android11的存储写入权限拒绝结果过滤2023/2/14 at 0:27
v1.4.1使用210工具库2023/1/13 at 23:48
v1.4.0使用独立的Utils库2022/9/2 at 20:39
v1.3.1继承Utils库中的接口2022/7/5 at 9:21
v1.3.0使用base的utils库2022/1/21 at 15:42
v1.2.0常量名&值更换2022/1/5 at 23:42
v1.1.9修改依赖库&选择图片回调2022/01/02 at 21:55
v1.1.8开放openNoPermission方法,更新权限请求库版本2021/11/18 at 15:44
v1.1.7图片视频存储地址修改为公共媒体地址(targetSdkVersion 29+时在Android10+有文件访问限制)2021/7/1 at 11:24
v1.1.61.放弃非AndroidX维护;2.增加默认选中图片集合;3.使用jitpack仓库2021/6/7 at 13:35
v1.0.10/v1.1.51.照片存储空间修改到Android/data/${applicationId}/files/imagePicker文件夹下;2.更新权限请求库版本2021/2/5 at 15:49
v1.0.9/v1.1.4处理部分机型未释放相机bug&忽略目标版本为29时的分区存储2020/8/24 at 13:58
v1.0.8/v1.1.3增加文件夹选择下拉图标2020/8/21 at 10:50
v1.0.7/v1.1.2根据使用功能动态请求权限2020/8/18 0018 at 上午 10:50
v1.0.6/v1.1.1修复请求权限失败时崩溃bug2020/8/17 0017 at 下午 17:31
v1.1.0迁移到androidx2020/7/22 0022 at 上午 11:54
v1.0.5多媒体查找逻辑调整2020/6/17 0017 at 下午 17:37
v1.0.4视频做最大限制(显示的最大视频长度和录制的最大长度一致)2020/6/2 0002 at 上午 11:00
v1.0.3imageInfo实现Parcelable接口2020/5/27 0027 at 下午 14:39
v1.0.2更全的样式自定义2020/5/20 0020 at 下午 17:13
v1.0.0初版2020/5/15 0015 at 下午 16:14

赞赏

如果您喜欢ImagePicker,或感觉ImagePicker帮助到了您,可以点右上角“Star”支持一下,您的支持就是我的动力,谢谢

联系我

邮箱:763263311@qq.com/ztxiaoran@foxmail.com

License

Copyright © [2020] [Swing]

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the “Software”), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值