Android 仿微信的圖片選擇器ImageSelector的使用

今天給你們介紹一個仿微信的圖片選擇器: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" //去掉ActivityActionBar // 使用者能夠根據本身的項目去配置,不必定要這樣寫,只要不ActivityActionBar去掉就能夠了。 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

相關文章
相關標籤/搜索