今天给你们介绍一个仿微信的图片选择器:ImageSelector。ImageSelector支持图片的单选、限数量的多选和不限数量的多选。支持图片预览和图片文件夹的切换。在上一篇文章 《Android 实现一个仿微信的图片选择器》 中我介绍了ImageSelector的实现思路和分析了它的核心代码,有兴趣的同窗能够看一下。完整的代码放在了GitHub,欢迎你们下载和使用。本篇文章为你们介绍ImageSelector的具体使用方式。 先上效果图: php
**一、引入依赖 ** 在Project的build.gradle在添加如下代码java
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
maven { url 'https://maven.google.com' }
}
}
复制代码
在Module的build.gradle在添加如下代码android
compile 'com.github.donkingliang:ImageSelector:1.6.0'
复制代码
二、配置AndroidManifest.xmlgit
<!-- 储存卡的读写权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 调用相机权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 图片选择Activity -->
<activity android:name="com.donkingliang.imageselector.ImageSelectorActivity" //去掉Activity的ActionBar // 使用者能够根据本身的项目去配置,不必定要这样写,只要不Activity的ActionBar去掉就能够了。 android:theme="@style/Theme.AppCompat.Light.NoActionBar" // 横竖屏切换处理。 // 若是要支持横竖屏切换,必定要加上这句,不然在切换横竖屏的时候会发生异常。 android:configChanges="orientation|keyboardHidden|screenSize"/>
<!-- 图片预览Activity -->
<activity android:name="com.donkingliang.imageselector.PreviewActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar" android:configChanges="orientation|keyboardHidden|screenSize"/>
<!-- 图片剪切Activity -->
<activity android:name="com.donkingliang.imageselector.ClipImageActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
<!-- Android 7.0 文件共享配置,必须配置 -->
<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/file_paths" />
</provider>
复制代码
在res/xml文件夹下建立file_paths.xml文件(名字能够本身定义)github
<?xml version="1.0" encoding="utf-8"?>
<paths>
<!-- 这个是保存拍照图片的路径,必须配置。 -->
<external-path name="images" path="Pictures" />
</paths>
复制代码
三、调起图片选择器 ImageSelector支持图片的单选、限数量的多选和不限数量的多选。还能够设置是否使用相机、是否剪切图片等配置。ImageSelector提供了统一的调起相册的方法。数组
//单选
ImageSelector.builder()
.useCamera(true) // 设置是否使用拍照
.setSingle(true) //设置是否单选
.start(this, REQUEST_CODE); // 打开相册
//限数量的多选(比喻最多9张)
ImageSelector.builder()
.useCamera(true) // 设置是否使用拍照
.setSingle(false) //设置是否单选
.setMaxSelectCount(9) // 图片的最大选择数量,小于等于0时,不限数量。
.setSelected(selected) // 把已选的图片传入默认选中。
.start(this, REQUEST_CODE); // 打开相册
//不限数量的多选
ImageSelector.builder()
.useCamera(true) // 设置是否使用拍照
.setSingle(false) //设置是否单选
.setMaxSelectCount(0) // 图片的最大选择数量,小于等于0时,不限数量。
.setSelected(selected) // 把已选的图片传入默认选中。
.start(this, REQUEST_CODE); // 打开相册
//单选并剪裁
ImageSelector.builder()
.useCamera(true) // 设置是否使用拍照
.setCrop(true) // 设置是否使用图片剪切功能。
.setSingle(true) //设置是否单选
.start(this, REQUEST_CODE); // 打开相册
复制代码
REQUEST_CODE就是调用者本身定义的启动Activity时的requestCode,这个相信你们都能明白。selected能够在再次打开选择器时,把原来已经选择过的图片传入,使这些图片默认为选中状态。bash
四、接收选择器返回的数据 在Activity的onActivityResult方法中接收选择器返回的数据。微信
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && data != null) {
//获取选择器返回的数据
ArrayList<String> images = data.getStringArrayListExtra(
ImageSelectorUtils.SELECT_RESULT);
}
}
复制代码
ImageSelectorUtils.SELECT_RESULT是接收数据的key。数据是以ArrayList的字符串数组返回的,就算是单选,返回的也是ArrayList数组,只不过这时候ArrayList只有一条数据而已。ArrayList里面的数据就是选中的图片的文件路径。app
ImageSelector的使用就介绍到这里了。 最后给出ImageSelector的项目地址:github.com/donkinglian…maven