1.获取依赖
project的build.gradle
allprojects {
repositories {
......
maven { url "https://jitpack.io" }
}
}
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)