今天給你們介紹一個仿微信的圖片選擇器: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