打造一個瀑布流圖片瀏覽App 一、前言 二、技術引用 三、效果 四、下載

一、前言

最近相繼發佈了幾個開源項目,造完輪子,很自然的想到要弄個App來跑一下。
於是搗弄了一個瀏覽圖片的APP。

二、技術引用

LightKV
高性能key-value存儲組件,相比SharedPreferences有全方位的改進。
支持Kotlin屬性委託,在Kotlin環境下使用,可以像讀寫變量一樣讀寫配置。

LightEvent
超輕量的事件總線,不到50行代碼。
簡單到極致,使用也很方便。

Task
實用的線程調度框架,針對App開發的使用場景做了適用性封裝。
支持優先級,適配生命週期,支持任務分組,任務去重;
可直接執行任務,可用於RxJava, 可替換AsyncTask。

Doodle
高效的圖片加載框架。
功能完備,實現清晰。

此外,還用到了其他的一些開源工具,例如:PhotoView

頁面佈局:
頻道: ViewPager + Fragment
圖片列表: RecyclerView + StaggeredGridLayoutManager(瀑布流)。
是比較常規的佈局了,不過其中要解決頻道編輯,圖片跳動等一些小問題。

圖片來源:
圖片的來源主要是爬取一些優質的圖片採集網站。
沒有用到什麼爬蟲框架和解析框架(比如JSoup), 直接找特徵然後用正則提取。

三、效果

這些是從花瓣網下載的圖片,花瓣網的素材還是不錯的,而且更新得很快。
項目中預置了幾個頻道,圖片展示則是瀑布流+分頁加載。

遇到喜歡的圖片想下載回來怎麼辦?
雖然功能簡單,但是“剛需”還是要提供的:
可以設置存儲路徑,然後點擊圖片詳情頁右上角的“下載”即可。
側滑欄可以點擊“已下載”查看下載好的圖片,或者設置路徑到SDCard的Picture目錄,用系統的圖片瀏覽器打開-_-
有的圖片是長圖,詳情頁是用PhotoView顯示的圖片(提供友好的縮放交互), 其繼承於ImageView, 然後對於寬或者高大約4096的圖片,顯示不出來。
所以遇到這樣的圖片,可以下載回來,用系統的圖片瀏覽器打開……
主要是筆者一時沒找到可以像PhotoView這樣支持縮放,而又支持長圖的控件。有用過這樣的控件的讀者可以推薦一下。

除了花瓣網之外,還支持老外的一個圖片網站:unsplash
這個網站都是高清相機拍的圖片,源文件分辨率超高,還好網站提供了指定分辨率下載的API,所以圖片預覽無壓力。
遺憾的是這個網站沒有按頻道劃分,只有關鍵字索引,不過也可以自定義關鍵字來作爲頻道分組了。

四、下載

項目已發佈到github, 項目地址:https://github.com/No89757/Collector

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章