版本已更新至1.6.0,最新功能請檢視傳送門: https://github.com/leonHua/LFilePicker
在 Android 開發中如果需要選擇某個檔案,可以直接調取系統的檔案管理器進行選擇,但是無法保證各個廠商的手機介面一致,而且解析Uri 還比較繁瑣,如果還需要多選呢?需要檔案型別過濾呢?老闆說介面醜呢?
那麼福利來了,你可以使用LFilePicker,它都支援什麼呢?
- 還算漂亮的介面
- 各種手機一致的體驗
- 多種介面風格
- 自定義標題文字和顏色
- 檔案多選或者單選
- 檔案型別過濾
- Fragment啟動
- 國際化(中英文切換)
- 檔案數量限制
截止目前為止在原來的版本上增加了如下新的功能,並且修改了若干已知問題。
- 增加資料夾路徑選擇
- 全選校驗,避免資料重複新增
- 單選模式下不在顯示全選操作
- 最大數量限制 (withMaxNum)
- 全選或者全部取消
在哪裡能找到它呢?Bio Bio Bio
心急的人可以直接根據說明文件進行使用了,任性的人跟著我繼續走~~~ 先看看介面,萬一醜的不行呢?
好了還算可以把,和經典的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 柔和藍
選擇介面標題不合適?換!
new LFilePicker()
.withActivity(this)
.withRequestCode(Consant.REQUESTCODE_FROM_ACTIVITY)
.withTitle("我的標題")//標題文字
.withTitleColor("#FF99CC")//文字顏色
.start();
複製程式碼
想要限制單選或者多選?換!
new LFilePicker()
.withActivity(this)
.withRequestCode(Consant.REQUESTCODE_FROM_ACTIVITY)
.withMutilyMode(true)
.start();
複製程式碼
withMutilyMode(true):true代表多選;false代表單選
想要限制選擇檔案型別?過濾!
new LFilePicker()
.withActivity(this)
.withRequestCode(Consant.REQUESTCODE_FROM_ACTIVITY)
.withFileFilter(new String[]{".txt", ".png"})
.start();
複製程式碼
英文怎麼搞?已經內建實現!
將手機語言調整為英文後:
返回圖示不喜歡?換!
new LFilePicker()
.withActivity(this)
.withRequestCode(Consant.REQUESTCODE_FROM_ACTIVITY)
.withBackIcon(Constant.BACKICON_STYLEONE)
.start();
複製程式碼
withBackIcon() 提供三種風格:
- Constant.BACKICON_STYLEONE
- Constant.BACKICON_STYLETWO
- Constant.BACKICON_STYLETHREE
標題背景顏色不喜歡?換!
new LFilePicker()
.withActivity(this)
.withRequestCode(Consant.REQUESTCODE_FROM_ACTIVITY)
.withBackgroundColor("#FF9966")
.start();
複製程式碼
切換選擇路徑?已經包含,隨便選!
結束
基本上能夠滿足日常選擇檔案的需求了,開源不易,如果對你有用,歡迎Star給我一個小小的鼓勵!
另外推薦一個小庫:可以很方便的實現設定介面:LSettingView
更多文章歡迎訪問:我的部落格