點擊上方的終端研發部,右上角選擇“設爲星標”
每日早9點半,技術文章準時送上
公衆號後臺回覆“學習”,獲取作者獨家祕製精品資料
作者:zskingking
鏈接:https://www.jianshu.com/p/60eefed7870f
1.背景
其實在我入行的時候就一直想做一款自己平時能把玩的App,之前也想過要不要做一個本地的,但是侷限性太大激不起來自己的動力,聯網的自己又不會寫後端所以就一直拖着。年前Github上瞎逛發現了一個好玩的App WanAndroid,仔細一瞅提供的還有 API,再仔細一瞅原來是鴻洋大大發起的甚是激動,於是拍了拍滿是灰塵的小目標,歷時半個月(也可能是20天)有了現在的第一版WanAndroid。
主色調目前爲紅色,後續的版本會加入切換主題功能。
文章底部有APK二維碼以及github地址
2.效果圖
整個App基於Material Design風格,超級簡潔的界面極具沉浸式的體驗。
3.功能
首頁包含五個Tab
首頁: 可預覽最新最熱的技術文章,對喜歡的文章可做收藏操作。
項目: 包含完整原生項目、跨平臺項目,也有動畫、網絡等Demo。
廣場: 目前包含兩個模塊,分別是體系、導航,可快速定位知識點。
公衆號: 可實時查看Android領域知名度較高的博主公衆號。
我的: 可查看排明、收藏、我的文章以及發佈文章。
具體功能可下載Apk或者clone項目自我體驗,對於一個技術人來說我覺得還是挺實用的。
4應用技術
4.1語言
整個App全部基於Kotlin開發
4.2 架構模式 MVP
Model
作者網絡請求使用的是Retrofit+RxJava,再此基礎下作者又封裝了HttpDefaultObserver,
可根據服務器返回數據的結構統一脫殼、解析以及錯誤判斷,可作爲所有界面的Model層,所以網絡請求方面沒有單獨去寫一個具體的Model出來。
View
定義了兩個基類BaseActivity、BaseFragment以及LazyFragment(繼承自BaseFragment),統一處理跳轉邏輯
以及通過Lifecycle與Presenter進行綁定,並且施加統一沉浸式效果。
Presenter
所有Presenter都繼承自BasePresenter,生命週期與View層同步,在基類中統一管理RxJava生命週期。
其實最初是想直接用jetpack開發,但作者還是想按照自己的想法搭建一套MVP嗎,但是jetpack版以及Flutter版WanAndroid後續都會逐個推出,敬請期待。
4.3用到的第三方庫如下
rxjava
retrofit(對網絡層做了二次封裝,將服務端數據脫殼,統一處理錯誤信息)
glide
SmartRefreshLayout
eventbus
avi:library
BaseRecyclerViewAdapterHelper
greendao
MagicIndicator
easypermissions
LabelsView
5.總結
麻雀雖小,五臟俱全,雖然項目很簡單,但內部代碼以及整個架構我覺得還是具備參考價值的,附上github,讓我們共同進步。
也可直接掃碼下載apk。apk目前託管在碼雲上,所以掃描二維碼可能需要登錄。
最後再次感謝鴻洋大大提供的API,以及阿里巴巴矢量圖&花瓣網提供的圖標和UI設計。
閱讀更多
相信自己,沒有做不到的,只有想不到的
在這裏獲得的不僅僅是技術!
喜歡就給個“在看”