Android開發之高仿微信圖片選擇器


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

實現效果圖:

 
效果圖1

 
效果圖2

 
效果圖3

 
效果圖4

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

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

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

2、一行代碼調用:

                ImagePicker.getInstance()
                        .setTitle("標題")//設置標題 .showCamera(true)//設置是否顯示拍照按鈕 .showImage(true)//設置是否展示圖片 .showVideo(true)//設置是否展示視頻 .setMaxCount(9)//設置最大選擇圖片數目(默認為1,單選) .setImagePaths(mImageList)//保存上一次選擇圖片的狀態,如果不需要可以忽略 .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、如何自定義圖片加載器(不定死框架,讓框架更加靈活,需要去實現ImageLoader接口即可):

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

寫在最后:

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

版本更新里程碑:

Version1.0.0:

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

Version1.1.0:

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

Version2.0.0:

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

源碼下載:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM