Android開發(fā)之高仿微信圖片選擇器

記得剛開始做Andriod項目那會,經(jīng)常會碰到一些上傳圖片的功能需求,特別是社交類的app,比如用戶頭像,說說配圖,商品配圖等功能都需要讓我們到系統(tǒng)相冊去選取圖片,但官方卻沒有提供可以選取多張圖片的相關API,所以那時候會到Github上去找找相關的開源庫,也覺得挺方便的,但隨著后來Android系統(tǒng)的更新,帶來了很多新特性和API的改變,比如從Android6.0后的動態(tài)權限申請,7.0的私有目錄權限以及一些API的廢棄(Uri.fromFile等),但所用的開源庫作者又沒有很及時的去更新適配,又或者一些開源庫直接在庫中引入了圖片加載框架,導致項目中存在多個圖片加載框架,這樣就造成了包體積的增大和方法數(shù)的增加,導致項目中或多或少會出現(xiàn)一些問題,所以那時萌生了想自己寫一個圖片選擇器,盡可能的做到簡潔,速度快,然后一個圖片選擇器的庫就這么誕生了:ImagePicker圖片加載器

實現(xiàn)效果圖:

效果圖1

效果圖2

效果圖3

效果圖4

相比1.0.+版本,2.0版本進行了代碼的大塊重構,注重模塊間的代碼解耦,簡化了配置,將兼容Android7.0所需要的FileProvider下沉到庫中完成,不再需要開發(fā)者配置,并對GIF圖,視頻,大圖預覽等功能有了支持。

1、如何在項目中引入該圖片加載庫:

//gradle版本在3.0以下引入此行
compile 'com.lcw.library:imagepicker:2.2.0'

//gradle版本在3.0以上引入此行
implementation 'com.lcw.library:imagepicker:2.2.0'

2、一行代碼調用:

                ImagePicker.getInstance()
                        .setTitle("標題")//設置標題
                        .showCamera(true)//設置是否顯示拍照按鈕
                        .showImage(true)//設置是否展示圖片
                        .showVideo(true)//設置是否展示視頻
                        .setSingleType(true)//設置圖片視頻不能同時選擇
                        .setMaxCount(9)//設置最大選擇圖片數(shù)目(默認為1,單選)
                        .setImagePaths(mImageList)//保存上一次選擇圖片的狀態(tài),如果不需要可以忽略
                        .setImageLoader(new GlideLoader())//設置自定義圖片加載器
                        .start(MainActivity.this, REQUEST_SELECT_IMAGES_CODE);//REQEST_SELECT_IMAGES_CODE為Intent調用的requestCode

3、如何獲取選中的圖片集合:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_SELECT_IMAGES_CODE && resultCode == RESULT_OK) {
            List<String> imagePaths = data.getStringArrayListExtra(ImagePicker.EXTRA_SELECT_IMAGES);
        }
    }

4、如何自定義圖片加載器(不定死框架,讓框架更加靈活,需要去實現(xiàn)ImageLoader接口即可):

public class GlideLoader implements ImageLoader {
    //to do something 可以參考Demo用法
}

寫在最后:

這個庫會持續(xù)維護下去,后續(xù)會把大圖預覽,裁剪等功能添加進去,遵循極簡的原則,把庫做的盡可能的小,歡迎大家提建議,更加具體的使用請參考下面源碼中的Demo演示~

版本更新里程碑:

Version1.0.0:

1、可預覽各文件夾下的圖片
2、可配置是否支持相機拍照
3、可配置選擇圖片模式(單選/多選)
4、可配置選擇圖片數(shù)量 5、可配置圖片加載框架

Version1.1.0:

1、新增大圖預覽功能(初步實現(xiàn),考慮性能后期會改為Fragment承載,單一Activity架構)
2、更改選擇圖片文件夾彈窗高度
3、更改ImageLoader接口,開放小圖加載、大圖加載、清除緩存方法

Version2.0.0:

1、重構了大量的代碼,更加注重代碼間的解耦,相比1.0版本簡化了配置項(下沉FileProvider),讓開發(fā)者可以更專注于業(yè)務。
2、添加媒體庫掃描對GIF、視頻的支持,并開放接口讓開發(fā)者自行實現(xiàn)視頻播放邏輯。
3、添加媒體庫加載策略,開發(fā)者可自行配置加載圖片或者視頻,靈活運用于不同業(yè)務實現(xiàn)。
4、完善大圖預覽功能,完善部分UI界面的顯示。

源碼下載:

這里附上源碼地址(歡迎Star,歡迎Fork):ImagePicker

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容