代码拉取完成,页面将自动刷新
一款针对Android平台下的图片选择器,支持从相册获取图片、视频、音频&拍照,支持裁剪(单图or多图裁剪)、压缩、主题自定义配置等功能,支持动态获取权限&适配Android 5.0+系统的开源图片选择框架。
-如何引用
-进阶使用
-返回结果说明
-演示效果
-混淆配制
-常见错误
-如何提Issues
-兼容性测试
-联系方式
-License
使用Gradle
repositories {
google()
mavenCentral()
}
dependencies {
// PictureSelector 基础 (必须)
implementation 'io.github.lucksiege:pictureselector:v3.0.2'
// 图片压缩 (按需引入)
implementation 'io.github.lucksiege:compress:v3.0.2'
// 图片裁剪 (按需引入)
implementation 'io.github.lucksiege:ucrop:v3.0.2'
// 自定义相机 (按需引入)
implementation 'io.github.lucksiege:camerax:v3.0.2'
}
或者Maven:
<dependency>
<groupId>io.github.lucksiege</groupId>
<artifactId>pictureselector</artifactId>
<version>v3.0.2</version>
</dependency>
<dependency>
<groupId>io.github.lucksiege</groupId>
<artifactId>compress</artifactId>
<version>v3.0.2</version>
</dependency>
<dependency>
<groupId>io.github.lucksiege</groupId>
<artifactId>ucrop</artifactId>
<version>v3.0.2</version>
</dependency>
<dependency>
<groupId>io.github.lucksiege</groupId>
<artifactId>camerax</artifactId>
<version>v3.0.2</version>
</dependency>
想要了解更多功能,请参阅文档
简单用例如下所示:
1、获取图片 GlideEngine
PictureSelector.create(this)
.openGallery(SelectMimeType.ofImage())
.setImageEngine(GlideEngine.createGlideEngine())
.forResult(new OnResultCallbackListener<LocalMedia>() {
@Override
public void onResult(List<LocalMedia> result) {
}
@Override
public void onCancel() {
}
});
2、单独拍照
PictureSelector.create(this)
.openCamera(SelectMimeType.ofImage())
.forResult(new OnResultCallbackListener<LocalMedia>() {
@Override
public void onResult(List<LocalMedia> result) {
}
@Override
public void onCancel() {
}
});
3、您还可以按如下示例使用:
(1)、注入到任意视图层
PictureSelector.create(this)
.openGallery(SelectMimeType.ofAll())
.setImageEngine(GlideEngine.createGlideEngine())
.buildLaunch(R.id.fragment_container, new OnResultCallbackListener<LocalMedia>() {
@Override
public void onResult(ArrayList<LocalMedia> result) {
}
@Override
public void onCancel() {
}
});
(2)、自行注入到任意视图层
PictureSelectorFragment selectorFragment = PictureSelector.create(this)
.openGallery(SelectMimeType.ofAll())
.setImageEngine(GlideEngine.createGlideEngine())
.build();
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, selectorFragment, selectorFragment.getFragmentTag())
.addToBackStack(selectorFragment.getFragmentTag())
.commitAllowingStateLoss();
4、预览图片或视频
PictureSelector.create(this)
.openPreview()
.setImageEngine(GlideEngine.createGlideEngine())
.setExternalPreviewEventListener(new OnExternalPreviewEventListener() {
@Override
public void onPreviewDelete(int position) {
}
@Override
public boolean onLongPressDownload(LocalMedia media) {
return false;
}
}).startActivityPreview(position, true, "data");
5、预览音频
AudioPlayDialog.showPlayAudioDialog(getContext(), availablePath);
设置图片选择器主题,更多请参阅文档
.setSelectorUIStyle();
或者您可以重载布局,更多请参阅文档
.setInjectLayoutResourceListener(new OnInjectLayoutResourceListener() {
@Override
public int getLayoutResourceId(Context context, int resourceSource) {
return 0;
}
高级用例如下所示:
1、使用自定义相机功能,详情请参阅文档
.setCameraInterceptListener(new OnCameraInterceptListener() {
@Override
public void openCamera(Fragment fragment, int cameraMode, int requestCode){
}
});
2、使用图片压缩功能,详情请参阅文档
.setCompressEngine(new CompressEngine() {
@Override
public void onStartCompress(Context context, ArrayList<LocalMedia> list, OnCallbackListener<ArrayList<LocalMedia>> call){
}
});
3、使用图片裁剪功能,详情请参阅文档
.setCropEngine(new CropEngine() {
@Override
public void onStartCrop(Fragment fragment, LocalMedia currentLocalMedia, ArrayList<LocalMedia> dataSource, int requestCode) {
}
});
4、使用图片编辑功能,详情请参阅文档
.setEditMediaInterceptListener(new OnMediaEditInterceptListener() {
@Override
public void onStartMediaEdit(Fragment fragment, LocalMedia currentLocalMedia, int requestCode) {
}
});
5、加载自定义数据源,详情请参阅文档
.setExtendLoaderEngine(new ExtendLoaderEngine() {
@Override
public void loadAllAlbumData(Context context, OnQueryAllAlbumListener<LocalMediaFolder> query) {
}
@Override
public void loadOnlyInAppDirAllMediaData(Context context, OnQueryAlbumListener<LocalMediaFolder> query) {
}
@Override
public void loadFirstPageMediaData(Context context, long bucketId, int page, int pageSize, OnQueryDataResultListener<LocalMedia> query) {
}
@Override
public void loadMoreMediaData(Context context, long bucketId, int page, int limit, int pageSize, OnQueryDataResultListener<LocalMedia> query) {
}
});
6、自定义权限申请,详情请参阅文档
.setPermissionsInterceptListener(new OnPermissionsInterceptListener() {
@Override
public void requestPermission(Fragment fragment, String[] permissionArray, OnCallbackListener<Boolean> call) {
}
@Override
public boolean hasPermissions(Fragment fragment) {
return false;
}
});
-keep class com.luck.picture.lib.** { *; }
-keep class com.luck.lib.camerax.** { *; }
// 如果引入了Ucrop库请添加混淆
-dontwarn com.yalantis.ucrop**
-keep class com.yalantis.ucrop** { *; }
-keep interface com.yalantis.ucrop** { *; }
Copyright 2016 Luck
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Android开发交流 662320389
Android开发交流 619458861
Android开发交流 679824206
Android开发交流 854136996
QQ 893855882
腾讯优测-深度测试-通过率达到100%
单一模式 | 混选模式 |
---|---|
![]() |
![]() |
默认风格 | 预览 | 多图裁剪 |
---|---|---|
![]() |
![]() |
![]() |
数字风格 | 预览 | 多图裁剪 |
---|---|---|
![]() |
![]() |
![]() |
白色风格 | 预览 | 单图裁剪 |
---|---|---|
![]() |
![]() |
![]() |
全新风格 | 预览 | 多图裁剪 |
---|---|---|
![]() |
![]() |
![]() |
相册目录 | 单选模式 | 头像裁剪 |
---|---|---|
![]() |
![]() |
![]() |
白色风格 | 视频 | 音频 |
---|---|---|
![]() |
![]() |
![]() |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。