1. 程式人生 > >Android圖片選擇器,仿微信的圖片選擇器的樣式和效果。支援圖片預覽和圖片切換

Android圖片選擇器,仿微信的圖片選擇器的樣式和效果。支援圖片預覽和圖片切換

Android圖片選擇器,仿微信的圖片選擇器的樣式和效果。支援圖片的單選、限數量的多選和不限數量的多選。支援圖片預覽和圖片資料夾的切換。支援圖片單選並剪裁。

先上效果圖:

圖片描述

1、引入依賴

在Project的build.gradle在新增以下程式碼

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
            // 如果你使用的是1.4.0或更早的版本,這句可以不用。
            maven { url 'https://maven.google.com'
} } }

在Module的build.gradle在新增以下程式碼

compile 'com.github.donkingliang:ImageSelector:1.5.0'

1.5.0版本中使用了Glide 4.x的版本,由於Glide 3.x版本和4.x版本在使用上有所差異,如果你的專案使用了Glide 3.x版本,而又不想升級到4.x,那麼你也可以使用ImageSelector:1.4.0版本,它和1.5.0版本之間只是Glide版本的差異而已。

2、配置AndroidManifest.xml

//儲存卡的讀取許可權
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
/> //圖片選擇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" />

3、調起圖片選擇器

ImageSelector支援圖片的單選、限數量的多選和不限數量的多選。在調起圖片選擇器的時候需要告訴選擇器,是那種情況。為了方便大家的使用,我在專案中提供了一個工具類,可以方便地調起選擇器。 調起選擇器只需要簡單的一句程式碼就可以了。

//單選
 ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, true, 0);

//限數量的多選(比喻最多9張)
ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 9);
ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 9, selected); // 把已選的傳入。

//不限數量的多選
ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE);
ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, selected); // 把已選的傳入。
//或者
ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 0);
ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 0, selected); // 把已選的傳入。

//單選並剪裁
ImageSelectorUtils.openPhotoAndClip(MainActivity.this, REQUEST_CODE);

REQUEST_CODE就是呼叫者自己定義的啟動Activity時的requestCode,這個相信大家都能明白。selected可以在再次開啟選擇器時,把原來已經選擇過的圖片傳入,使這些圖片預設為選中狀態。

4、接收選擇器返回的資料

在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裡面的資料就是選中的圖片的檔案路徑。


原文部落格地址:http://www.apkbus.com/blog-927916-77189.html