Charles - Android 多媒體選擇器

Charles - Android 多媒體選擇器

首先祝你們小年好!html

因爲在畢業設計中須要用到文件選擇器, 使用系統的文件選擇器則面臨着 UI 界面不統一的問題, 因此乾脆本身寫一個好了, 因而就有了這個項目 - Charles. 實際上, Charles 並不能算做是一個文件選擇器, 而是一個多媒體選擇器, 由於 Charles 並不支持直接經過路徑訪問特定文件. 好了, 廢話很少說, 先看圖:android



是的, 正如你所見, Charles 和 知乎開源的 Matisse 很是的類似. 實際上, Charles 參考了 Matisse 的 UI, 並在代碼上有作參考, 在此向知乎團隊表示感謝並獻上個人膝蓋?(關於 Matisse, 你能夠參考這篇文章 Matisse Android 圖片選擇器). git

咱們來看看 Charles 應該如何使用:github

Charles.from(this@MainActivity)
        .choose()
        .maxSelectable(9)
        .progressRate(true)
        .theme(R.style.Charles)
        .imageEngine(GlideEngine())
        .restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
        .forResult(REQUEST_CODE_CHOOSE)

從代碼和上面的截圖中能夠發現, Charles 是支持主題的. Charles 的特性並不單單如此, 使用 Charles, 你能夠:ide

  • 直接在 Activity 或者 Fragment 中調用;
  • 選擇多種媒體文件, 包括圖片, 視頻, 音頻和文件;
  • 應用不一樣的主題, 其中 Charles 內置了兩套 theme: 日間模式(Charles)和夜間模式(CharlesDark). 若是這兩套主題不符合你的需求, 你仍然能夠自定義主題;
  • 指定最大可選數量;
  • 支持橫豎屏. Charles 內部實現了狀態保存, 所以 Configuration 的變化並不會對 Charles 帶來不利的影響;
  • 支持多種圖片加載庫. Charles 內部提供了兩種圖片加載引擎: GlidePicasso. 固然, 若是以上兩種都不是你所須要的, 你還能夠自定義圖片加載引擎, 只須要實現一個接口就行了. Charles 目前並不支持 Fresco.

在 Charles 的內部, 採用了 Matisse 使用的 Loader 做爲 多媒體文件的加載器. 若是你對 Loader 感興趣, 能夠參考官方文檔. Charles 內部並無使用 MVP 或者 MVVM 等 MV* 實現解耦, 並且也沒有采用過多的第三方庫(實際上只依賴了 Kotlin, RecyclerView, AppCompat等少許的必須庫). ui

Charles 已經在 Github 開源: Charles. 有任何意見或者建議, 歡迎提 issue. 固然, 也歡迎你的 PR. this

最後再次感謝 gejiaheng知乎團隊. spa

附言1: Matisse 的命名來自 Henri Matisse, 一位法國畫家, 野獸派的創始人及主要表明人物, 也是一位雕塑家及版畫家. Charles 的命名並無這麼浪漫, 可是她和 Henri Matisse 仍是有一些共同點的, 例如: Henri Matisse 是野獸派的創始人, 而 Charles 的代碼確實也挺有野獸氣息的(代碼並非那麼優美, 笑~). 設計

參考:rest

Matisse Android 圖片選擇器: https://zhuanlan.zhihu.com/p/...
相關文章
相關標籤/搜索