LFilePicker---升級後更加豐富的檔案選擇利器

說啥都不聽發表於2017-12-21

版本已更新至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

風格1

風格2

風格3

標題背景顏色不喜歡?換!

  new LFilePicker()
                .withActivity(this)
                .withRequestCode(Consant.REQUESTCODE_FROM_ACTIVITY)
                .withBackgroundColor("#FF9966")
                .start();
複製程式碼

背景顏色效果圖

切換選擇路徑?已經包含,隨便選!

路徑選擇效果

結束

基本上能夠滿足日常選擇檔案的需求了,開源不易,如果對你有用,歡迎Star給我一個小小的鼓勵!

另外推薦一個小庫:可以很方便的實現設定介面:LSettingView

更多文章歡迎訪問:我的部落格

相關文章