造了四個輪子之後,我們上路跑一跑
一、前言
最近相繼釋出了四個開源專案,都是比較用心的專案。
造完輪子,很自然的想到要弄個App來跑一下。
在搬APP出來之前,先介紹下這幾個輪子吧。
二、輪子
昨晚我在秋名山輸給一輛五菱巨集光, 他用慣性飄移過彎,他的車很快,我只看到他有個修樓房漏水的招牌。
如果知道他是誰的話,麻煩你們跟他說一聲:禮拜六晚,我會在秋名山等他。

秋明山車神之所以開得快,不單是因為技術好,車神老爸對車子的調優也很重要,比如給車配了好輪子……編不下去了 -_-
LightKV
專案地址: ofollow,noindex">LightKV
高效能key-value儲存元件,相比SharedPreferences有全方位的改進。
支援Kotlin屬性委託,在Kotlin環境下使用,可以像讀寫變數一樣讀寫配置。
推薦指數:★★★★
LightEvent
專案地址: LightEvent
輕量級事件通訊方案(類似於EventBus的作用),不到50行程式碼。
簡單到極致,使用也很方便。
推薦指數:★★★
Task
專案地址: Task
實用的執行緒排程框架,針對App開發的使用場景做了適用性封裝。
支援優先順序,適配生命週期,支援任務分組,任務去重;
可直接執行任務,可用於RxJava, 可替換AsyncTask。
推薦指數:★★★★
Doodle
專案地址: Doodle
高效的圖片載入框架。
功能完備,實現清晰。
推薦指數:★★★★★
三、應用
四個輪子中有一個是圖片載入的,所以第一時間想到的就是做一個瀏覽圖片相關的APP。
如果僅僅是載入本地相簿什麼的就沒意思了,可以做一個瀏覽圖片素材網站的APP。
當然不是直接拿WebView去開啟別人的網站,這樣體驗不好;
可以解析網站中的圖片地址(沒錯,就是爬蟲-_-),用 RecyclerView + ImageView 顯示,這樣會比WebView流暢一些。
下面是幾張效果圖:



這些是從 花瓣網 下載的圖片,花瓣網的素材還是不錯的,而且更新得很快。
App只預置了幾個頻道,頁面什麼的也比較“樸素”,沒有設計師,湊合著著吧。
遇到喜歡的圖片想下載回來怎麼辦?
雖然功能簡單的不能再簡單了,但是“剛需”還是要提供的:
可以設定儲存路徑,然後點選圖片詳情頁右上角的“下載”即可。
側滑欄可以點選“已下載”檢視下載好的圖片,或者設定路徑到SDCard的Picture目錄,用系統的圖片瀏覽器開啟-_-
有的圖片是長圖,詳情頁是用PhotoView顯示的圖片(提供友好的縮放互動), 其繼承於ImageView, 然後對於寬或者高大約4096的圖片,顯示不出來。
所以遇到這樣的圖片,可以下載回來,用系統的圖片瀏覽器開啟……
主要是筆者一時沒找到可以像PhotoView這樣支援縮放,而又支援長圖的控制元件。有用過這樣的控制元件的讀者可以推薦一下。

除了花瓣網之外,還支援老外的一個圖片網站: unsplash
這個網站都是高清相機拍的圖片,原圖都是幾M上下。還好網站提供了指定解析度下載的API,所以圖片預覽無壓力。
遺憾的是這個網站沒有按頻道劃分,只有關鍵字索引,不過也可以自定義關鍵字來作為頻道分組了。
四、總結
上面四個輪子最簡單的 LightEvent 只有不到50行程式碼,最複雜的 Doodle 也不過100K,都是輕量級的元件。
最近Kotlin比較火,所以順勢嘗試儘量用Kotlin來實現(改寫),一遍總結程式設計技巧,一遍學語言特性。
Kotlin編寫程式碼確實相對Java總體上要更簡潔,很多人說能省1/3的程式碼;
這個我沒有具體去算過,從這段時間的體會來看,有部程式碼確實可以寫得比Java簡潔,尤其是集合運算,以及能用上Lambda的地方。
Java 8也有Lambda, 這裡我們就不討論太多了,以免引入紛爭。
個人的體驗是,寫業務程式碼可以儘量用Kotlin,寫基礎元件還是用Java划算一些:
相對於業務程式碼,基礎元件從Java到Kotlin,並不會減少多少程式碼,反而Jar包會變大,大約增加50%的體積。
五、宣告
感謝 花瓣網 和 unsplash 兩個圖片平臺,讓大家可以方便地分享和檢索圖片素材。
此專案為演示和學習的用途,若存在版權問題請聯絡刪除。
六、下載
專案已釋出到github, 專案地址: https://github.com/No89757/Collector