Skip to content

caoyanglee/ImagePicker

Repository files navigation

图片选择器

License API

演示

准备工作

1.获取依赖

project的build.gradle

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

app的build.gradle

implementation 'com.github.caoyanglee:ImagePicker:{latestVersion}'
//以下为此库所依赖的第三方
//图片裁剪
compile 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
//图片预览
compile 'com.github.chrisbanes:PhotoView:2.1.3'
//downloader
compile 'com.liulishuo.filedownloader:library:1.7.7'
//viewPager底部圆圈指示器
compile 'com.romandanylyk:pageindicatorview:1.0.3@aar'
//nineold 配合下拉图片
compile 'com.nineoldandroids:library:2.4.0'
//显示大图
compile 'com.shizhefei:LargeImageView:1.1.0'
//压缩
compile 'id.zelory:compressor:3.0.0'

2.增加权限

<!-- 相机权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 存储权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

3.增加FileProvider【适配7.0】

注意:此处的android:resource="@xml/filepaths"自己谷歌或直接获取demo文件

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/filepaths" />
</provider>

用法

1.1.打开图库 多选

ImagePicker.pickImage(activity);

多参数调用

/**
 * @param activity
 * @param maxSelectNum 最大选择图片数          default=9
 * @param enableCamera 是否启用摄像头          default=true
 * @param enablePreview 是否打开预览           default=true
 * @param showIsCompress 是否显示使用原图按钮   default=true
 */
ImagePicker.pickImage(activity, 9, true, true, true);

1.2.打开图库 单选

ImagePicker.pickImage4One(activity);

多参数调用

/**
 * @param activity
 * @param enableCamera 是否启用摄像头          default=true
 * @param enableCrop   是否打开裁剪            default=true
 * @param cropAspectRatioX   裁剪宽高比 宽     default=0
 * @param cropAspectRatioY   裁剪宽高比 高     default=0
 * @param showIsCompress 是否显示使用原图按钮   default=true
 */
ImagePicker.pickImage4One(activity,true,true,9,16,true);

1.3.直接拍照

ImagePicker.takePhoto(activity);

多参数调用

/**
 * @param activity
 * @param enableCrop 是否启用裁剪 default=false
 * @param cropAspectRatioX   裁剪宽高比 宽     default=0
 * @param cropAspectRatioY   裁剪宽高比 高     default=0
 */
ImagePicker.takePhoto(activity,ture,9,16);

2.接收结果信息

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (data==null)return
    if (resultCode == RESULT_OK && requestCode == ImagePicker.REQUEST_IMAGE) {
        val pics = data?.getSerializableExtra(ImagePicker.REQUEST_OUTPUT) as ArrayList<String>
       // do something
    }
}

3.可拖拽下拉退出的图片预览页面

ImagePreviewActivity.start(context,imageList)