版本已更新至1.6.0,最新功能請檢視傳送門: https://github.com/leonHua/LFilePicker
在 Android 開發中如果需要選擇某個檔案,可以直接調取系統的檔案管理器進行選擇,但是無法保證各個廠商的手機介面一致,而且解析Uri 還比較繁瑣,如果還需要多選呢?需要檔案型別過濾呢?老闆說介面醜呢?
那麼福利來了,你可以使用LFilePicker,它都支援什麼呢?
- 還算漂亮的介面
- 各種手機一致的體驗
- 多種介面風格
- 自定義標題文字和顏色
- 檔案多選或者單選
- 檔案型別過濾
- Fragment啟動
- 國際化(中英文切換)
- 檔案數量限制
截止目前為止在原來的版本上增加了如下新的功能,並且修改了若干已知問題。
- 增加資料夾路徑選擇
- 全選校驗,避免資料重複新增
- 單選模式下不在顯示全選操作
- 最大數量限制 (withMaxNum)
- 全選或者全部取消
在哪裡能找到它呢?Bio Bio Bio
心急的人可以直接根據說明文件進行使用了,任性的人跟著我繼續走~~~ 先看看介面,萬一醜的不行呢?
![預設介面](https://i.iter01.com/images/bf60894e16a31d326dcc33da0da547d128fa3d575fee6a64e96ffb6d0412c2b0.png)
好了還算可以把,和經典的Windows風格類似,先用用看吧。怎麼用呢?
基礎用法
1.新增依賴
compile 'com.leon:lfilepickerlibrary:1.3.0'
複製程式碼
【P.S.】 話說為了能夠方便的依賴使用可是操碎了心,將專案庫開源到JCenter使用的過程中趟了很多坑,如果感興趣,可以檢視文章:新版Bintray下將Android Library 開源到JCenter 的正確姿勢
【P.S.】 如果不知道 aar 如何使用,請參考文章:Android中 aar 檔案的日常使用
2.新增檔案讀寫許可權
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
複製程式碼
3.開啟選擇介面
你可以在Activity中開啟:
new LFilePicker()
.withActivity(MainActivity.this)
.withRequestCode(Consant.REQUESTCODE_FROM_ACTIVITY)
.start();
複製程式碼
也可以在Fragment中開啟(同時支援v4包SupportFragment):
new LFilePicker().withSupportFragment(mFragment)
.withRequestCode(Consant.REQUESTCODE_FROM_FRAGMENT)
.withTitle("Open From Fragment")
.start();
複製程式碼
4.接收選擇返回值
重寫方法並獲取資料:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == Consant.REQUESTCODE_FROM_ACTIVITY) {
List<String> list = data.getStringArrayListExtra(Constant.RESULT_INFO);
Toast.makeText(getApplicationContext(), "選中了" + list.size() + "個檔案", Toast.LENGTH_SHORT).show();
}
}
}
複製程式碼
已經以上你已經能夠正常使用了,但是說好的那麼多特性呢?接下來,深入一點
自由使用
資料夾和檔案圖示太low?換!
new LFilePicker()
.withActivity(this)
.withRequestCode(Consant.REQUESTCODE_FROM_ACTIVITY)
.withIconStyle(Constant.ICON_STYLE_YELLOW)
.start();
複製程式碼
withIconStyle(mIconType)提供三種風格:
- Constant.ICON_STYLE_YELLOW 經典黃(預設風格)
- Constant.ICON_STYLE_GREEN 清新綠
- Constant.ICON_STYLE_BLUE 柔和藍
![清新綠風格](https://i.iter01.com/images/de26a3940b8685c1f5b6a9c54211dbd7a41136d63b33b1baa64d921ee975b29c.png)
![柔和藍風格](https://i.iter01.com/images/57e9b31f650393d4eb1352a4761f47ce8e9030f3692f119714745010629bb022.png)
選擇介面標題不合適?換!
new LFilePicker()
.withActivity(this)
.withRequestCode(Consant.REQUESTCODE_FROM_ACTIVITY)
.withTitle("我的標題")//標題文字
.withTitleColor("#FF99CC")//文字顏色
.start();
複製程式碼
![標題和文字顏色效果](https://i.iter01.com/images/6662587729d57397eadd995401b18105189a068f47ab5b9fca23ef903a2a92af.png)
想要限制單選或者多選?換!
new LFilePicker()
.withActivity(this)
.withRequestCode(Consant.REQUESTCODE_FROM_ACTIVITY)
.withMutilyMode(true)
.start();
複製程式碼
withMutilyMode(true):true代表多選;false代表單選
![多選效果](https://i.iter01.com/images/ff27415e8601dd468c6a2e8422e76e4cdfd58e25defe18bcac085470b296bf11.gif)
![單選效果](https://i.iter01.com/images/a0301043efc3e23e5201c039c4f3a015abcb4184a4b7eee8c1bfb743117986cf.gif)
想要限制選擇檔案型別?過濾!
new LFilePicker()
.withActivity(this)
.withRequestCode(Consant.REQUESTCODE_FROM_ACTIVITY)
.withFileFilter(new String[]{".txt", ".png"})
.start();
複製程式碼
![預設不過濾效果](https://i.iter01.com/images/813078369e4e9b51a21af54136ec523a4ee761c53b6a999d1b5a0dc8bfaa6216.png)
![過濾後效果](https://i.iter01.com/images/34158bd39e8a5456f284b3f4f8d29c8467514cbd993bc0b570c1332135b551b4.png)
英文怎麼搞?已經內建實現!
將手機語言調整為英文後:
![英語環境操作](https://i.iter01.com/images/d3dacd0e3434b28ce48edb095dce99453e51d45eaba8743e92e4362f2c02189a.gif)
返回圖示不喜歡?換!
new LFilePicker()
.withActivity(this)
.withRequestCode(Consant.REQUESTCODE_FROM_ACTIVITY)
.withBackIcon(Constant.BACKICON_STYLEONE)
.start();
複製程式碼
withBackIcon() 提供三種風格:
- Constant.BACKICON_STYLEONE
- Constant.BACKICON_STYLETWO
- Constant.BACKICON_STYLETHREE
![風格1](https://i.iter01.com/images/813078369e4e9b51a21af54136ec523a4ee761c53b6a999d1b5a0dc8bfaa6216.png)
![風格2](https://i.iter01.com/images/a8e50128b28498949552d012fe0e68f3b3aa90edca6e45c63c8c2d638191d111.png)
![風格3](https://i.iter01.com/images/7ebd7670734bcbb3c2c0841ea4576389b85d3471b394a007809b5664bfd97c8a.png)
標題背景顏色不喜歡?換!
new LFilePicker()
.withActivity(this)
.withRequestCode(Consant.REQUESTCODE_FROM_ACTIVITY)
.withBackgroundColor("#FF9966")
.start();
複製程式碼
![背景顏色效果圖](https://i.iter01.com/images/177811f7dbb53ec8138aa6173c838cd11758c701d0074eac145db446de979883.png)
切換選擇路徑?已經包含,隨便選!
![路徑選擇效果](https://i.iter01.com/images/03b7a97f58c1e583c482002a0b7cdec564364e31df04d80e3e871e85226176d1.gif)
結束
基本上能夠滿足日常選擇檔案的需求了,開源不易,如果對你有用,歡迎Star給我一個小小的鼓勵!
另外推薦一個小庫:可以很方便的實現設定介面:LSettingView
更多文章歡迎訪問:我的部落格