Step 1. Add the JitPack repository to your build file
Add it in your root settings.gradle at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
Add it in your settings.gradle.kts at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
Add to pom.xml
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Add it in your build.sbt at the end of resolvers:
resolvers += "jitpack" at "https://jitpack.io"
Add it in your project.clj at the end of repositories:
:repositories [["jitpack" "https://jitpack.io"]]
Step 2. Add the dependency
dependencies {
implementation 'com.github.yudu233:PhotoPicker:v3.0.0'
}
dependencies {
implementation("com.github.yudu233:PhotoPicker:v3.0.0")
}
<dependency>
<groupId>com.github.yudu233</groupId>
<artifactId>PhotoPicker</artifactId>
<version>v3.0.0</version>
</dependency>
libraryDependencies += "com.github.yudu233" % "PhotoPicker" % "v3.0.0"
:dependencies [[com.github.yudu233/PhotoPicker "v3.0.0"]]
Android 照片选择器 ,支持单图、多图、视频、gif选择,内置鲁班压缩和Ucrop裁剪功能,以及主题自定义配置等功能
简书:PhotoPicker
参考项目:
-- 功能介绍</br> -- 集成方式</br> -- 照片选择器配置</br> -- 配置说明</br> -- 初始化</br> -- 回调方式</br> -- 使用的第三方库</br> -- 更新日志</br> -- 混淆配置</br> -- 联系方式</br> -- 效果预览</br>
allprojects {
repositories {
maven { url 'https://jitpack.io' }
jcenter()
}
}
在APP目录下的build.gradle中添加依赖
//support版本
implementation 'com.github.yudu233:PhotoPicker:2.0.4'
//androidx版本
implementation 'com.github.yudu233:PhotoPicker:3.0.0'
AndroidManifest.xml 配置
//适配android7.0
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="@string/file_provider_authorities"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider_paths"/>
</provider>
new PhotoPickConfig
.Builder(MainActivity.this)
.imageLoader(new GlideImageLoader()) //图片加载方式,支持任意第三方图片加载库
.spanCount(PhotoPickConfig.GRID_SPAN_COUNT) //相册列表每列个数,默认为3
.pickMode(PhotoPickConfig.MODE_PICK_SINGLE) //设置照片选择模式为单选,默认为单选
.maxPickSize(PhotoPickConfig.DEFAULT_CHOOSE_SIZE) //多选时可以选择的图片数量,默认为1张
.setMimeType(MimeType.TYPE_ALL) //显示文件类型,默认全部(全部、图片、视频)
.showCamera(true) //是否展示相机icon,默认展示
.clipPhoto(true) //是否开启裁剪照片功能,默认关闭
.clipCircle(false) //是否裁剪方式为圆形,默认为矩形
.showOriginal(true) //是否显示原图按钮,默认显示
.startCompression(true) //是否开启压缩,默认true
.selectedMimeType(data) //选择后返回的文件(用于判断下次进入是否可展示其他类型文件)
.setCallback(new PhotoSelectCallback()) //回调
.build();
imageLoader(new GlideImageLoader())</br> 图片加载方式,可以自定义支持Glide、Piscasso、Fresco
setMimeType(MimeType.TYPE_ALL)</br> 显示文件类型,默认全部(全部、图片、视频)
spanCount(3)</br> 设置相册列表每列展示个数,默认为3列
pickMode(PhotoPickConfig.MODE_PICK_SINGLE)</br> 设置照片选择模式(单选、多选),默认为单选
maxPickSize(9)</br> 多选时可以选择的图片数量,当pickMode为多选时默认为9张,单选默认为1
showCamera(true)</br> 是否展示相机icon,默认展示,当pickMode为多选时默认不展示
clipPhoto(false)</br> 是否开启裁剪照片功能,默认关闭,需手动开启,开启后多选模式自动变为单选
clipCircle(true)</br> 裁剪方式为是否圆形,默认为矩形,设置圆形适用于设置头像
showOriginal(true)</br> 是否显示原图按钮,默认显示,选中后若开启了图片压缩将不再压缩图片,返回原图
startCompression(true)</br> 是否启动图片压缩功能,默认开启(目前图片裁剪后没有再做压缩处理)
selectedMimeType(List<MediaData> data)</br> 传入上一次选中的数据,用于判断下次进入是否可展示其他类型文件。如类似朋友圈,第一次选择了图片,此时数据类型为MimeType.TYPE_ALL,打开时将过滤视频文件。</br> ==注:如果没有多类型的文件限制,可以不加该api==
setCallback(new PhotoSelectCallback())</br> 回调方式1:setCallback();回调方式2:onActivityResult()
在Application中初始化:
PhotoPick.init(getApplicationContext(), PhotoPickOptionsConfig.getPhotoPickOptions(context));
配置
public static PhotoPickOptions getPhotoPickOptions(Context context) {
PhotoPickOptions options = new PhotoPickOptions();
//自定义文件存储路径
options.filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "eWorld/";
//自定义文件夹名称
options.imagePath = options.filePath + "cytx/";
//自定义FileProvider地址
options.photoPickAuthority = context.getString(R.string.file_provider_authorities);
//自定义主题颜色 同步APP
options.photoPickThemeColor = R.color.colorAccent;
return options;
}
new PhotoPickConfig
.Builder(MainActivity.this)
...
.setCallback(new PhotoSelectCallback() {
@Override
public void selectResult(ArrayList<MediaData> photos) {
}).build();
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) return;
if (requestCode == PhotoPickConfig.PICK_SELECT_REQUEST_CODE) {
ArrayList<MediaData> datas = data.getParcelableArrayListExtra(PhotoPickConfig.EXTRA_SELECT_PHOTOS);
MediaData mediaData = datas.get(0);
if (mediaData.isClip()) {
Log.e("裁剪:", mediaData.getClipImagePath());
mContent.setText(builder.append(mediaData.getClipImagePath() + "\n"));
return;
}
if (mediaData.isCamera()) {
Log.e("相机:", mediaData.getCameraImagePath());
mContent.setText(builder.append(mediaData.getCameraImagePath() + "\n"));
return;
}
if (mediaData.isCompressed()) {
Log.e("压缩后:", mediaData.getCompressionPath());
mContent.setText(builder.append(mediaData.getCompressionPath() + "\n"));
return;
}
Log.e("原始地址::", mediaData.getOriginalPath());
mContent.setText(builder.append(mediaData.getOriginalPath() + "\n"));
}
}
PhotoView slidinguppanel ucrop
-dontwarn com.yalantis.ucrop**
-keep class com.yalantis.ucrop** { *; }
-keep interface com.yalantis.ucrop** { *; }
有问题可以添加QQ:19880794(不常上线) 微信:dadada0413
