造了四個輪子之後,我們上路跑一跑

一、前言

最近相繼發佈了四個開源項目,都是比較輕量的項目。
造完輪子,很自然的想到要弄個App來跑一下。
在搬APP出來之前,先介紹下這幾個輪子吧。

二、輪子

昨晚我在秋名山輸給一輛五菱宏光, 他用慣性飄移過彎,他的車很快,我只看到他有個修樓房漏水的招牌。
如果知道他是誰的話,麻煩你們跟他說一聲:禮拜六晚,我會在秋名山等他。

秋明山車神之所以開得快,不單是因爲技術好,車神老爸對車子的調優也很重要,比如給車配了好輪子……編不下去了 -_-

LightKV

項目地址: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%的體積。

五、下載

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

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