在我们的日常开发中,经常有使用多图选择和展示的需求。这个时候,如果没有较好的解决方案,我们需要自己编写大量的代码处理图片的选择和展示,这无疑会增加我们的开发时间和难度。因此,本文将介绍一个Android图片选择器,可以轻松解决多图选择和展示问题,让我们的开发变得更加简单。
一、使用方式
对于这个图片选择器,我们可以使用以下步骤集成到我们的项目中:
1、在项目的build.gradle文件中添加以下代码:
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
2、在app的build.gradle文件中添加以下代码,引入库:
dependencies {
implementation 'com.github.LuckSiege.PictureSelector:v2.8.0-androidx'
}
3、在启动图片选择器的Activity中添加以下代码:
// 使用方法
PictureSelector.create(this)
.openGallery(PictureMimeType.ofImage())
.maxSelectNum(9)
.imageSpanCount(4)
.compress(true)
.forResult(PictureConfig.CHOOSE_REQUEST);
我们可以从以上代码中看出,在使用该库时,只需要简单的几行代码调用就可以打开图片选择器,并实现多图选择功能。
二、基本功能介绍
1、可以选择与预览多张图片。
通过使用该库,我们可以在几行代码中轻松实现多图选择和预览。而且在预览图片时,我们还可以自定义图片的风格和布局。
2、支持单图压缩和多图压缩。
使用该库时,我们可以自由选择是否开启图片压缩功能。而且在进行图片压缩时,该库还能自动判定当前手机设置的图片压缩质量,以达到最优化的结果。
3、支持图片裁剪功能。
在使用该库时,我们可以自由选择是否启用图片裁剪功能。而且在进行图片裁剪时,该库还可以根据我们设置的裁剪规则生成对应的裁剪框,方便我们更精确的进行图片裁剪。
同时,该库还支持图片旋转、拍照、录制视频等功能。
三、实现代码
以下是一个简单的实现使用该库的代码示例:
// Step 1. 图片选择设置
PictureSelector.create(this)
.openGallery(PictureMimeType.ofImage())
.maxSelectNum(9)
.imageSpanCount(4)
.compress(true)
.forResult(PictureConfig.CHOOSE_REQUEST);
// Step 2. 图片预览设置
PictureSelector.create(this)
.themeStyle(R.style.picture_default_style)
.loadImageEngine(GlideEngine.createGlideEngine())
.forResult(PictureConfig.CHOOSE_REQUEST);
// Step 3. 图片压缩功能设置
compressConfig =
new CompressConfig.Builder().setMaxSize(512000) // 最大压缩尺寸
.setMaxPixel(1200) // 最大像素,默认值:1200
.enableReserveRaw(true) // 是否保留原文件,默认:true
.create();
PictureSelector.create(this)
.compress(true) // 开启压缩功能
.synOrAsy(true) // 同步压缩方法
.loadImageEngine(GlideEngine.createGlideEngine()) // 请参考Demo GlideEngine.java
.compressSavePath(getPath()) // 压缩图片保存地址
.compressConfig(compressConfig) // 压缩图片的配置
.forResult(PictureConfig.CHOOSE_REQUEST);
// Step 4. 图片裁剪功能设置
PictureSelector.create(this)
.openGallery(PictureMimeType.ofImage())
.imageSpanCount(4)
.maxSelectNum(9)
.minSelectNum(1)
.selectionMode(PictureConfig.MULTIPLE)
.isCamera(true)
.isZoomAnim(true)
.isGif(false)
.previewImage(true)
.previewVideo(false)
.enablePreviewAudio(false)
.enableCrop(true)
.cropWH(1,1)
.compress(true)
.compressQuality(80)
.synOrAsy(true)
.glideOverride(160,160)
.withAspectRatio(1, 1)
.hideBottomControls(false)
.freeStyleCropEnabled(true)
.isDragFrame(false)
.forResult(PictureConfig.CHOOSE_REQUEST);
参考资料
感兴趣的读者可以参考以下资料以深入了解该库的使用和实现细节:
希望本文能够帮助到大家,降低我们在图片选择和展示方面的开发难度,为我们的日常开发工作带来更大的便利。