【小鵝事務所】Android記錄事務APP —— MVVM + Flow+ Room + Jetpack 實現
介紹
這個APP是弄畢業設計的時候寫的,也是一個比較成規模的個人專案,斷斷續續花了幾個月的時間,將會分為多篇文章記錄一下。剛開始寫這個APP的時候也僅僅看完郭霖老師的一本《第一行程式碼》。由於在學習的過程中用到了很多別人的成果,糾結了很久發不發出來,現在發出來用來記錄我的Android學習路程。後續將會用多篇文章爬坑。。。
先上專案連結
http://github.com/MReP1/LittleGooseOffice
專案中的程式碼有部分來源於開原始碼,由於寫的時間離現在有點遠,有些記不清,如有冒犯到,請聯絡本人。 - 日曆模組來自於:http://github.com/huanghaibin-dev/CalendarView 3.7.1開源版本,由於用的時候JCenter跑路了,因此就拷了一份放本地。 - 時間選擇模組來自於呆呆維尼大佬的:http://juejin.cn/post/6844903685441454087 很好用,推薦! - 富文字模組忘了。 - APP封面也忘了,如有抄襲到原作者的設計,請聯絡我。
設計
在進行APP UI設計的時候參考了Material Design的設計和使用了Error配色。[設計稿連結] (http://www.figma.com/file/V7rofx7MnlAsZUVcmmOZ1i/Account?node-id=712%3A1773)
由於當代Android手機太大了,因此我主要將操作區域放在了螢幕的中下方,將展示區域放在螢幕的上方,方便使用。
APP中的主要功能為筆記、記賬、記錄事務、紀念日的功能,有很多市面上應用的影子,也比較縫合。
MVVM
本APP架構使用了MVVM架構。
Model 層
在資料持久上使用了Room資料庫,使用DataStore存放一些不是很重要的資料,沒有架設伺服器。在使用Room的時候遇到了比較多的坑,並且網上常見的教程都是關於簡單使用,場景一旦複雜就沒什麼教程了,之後有時間會寫一期說說。
ViewModel 層
ViewModel使用了Jetpack同名框架ViewModel,這裡就沒什麼好說的,主要承接View和Model層之間的中間人。
View 層
View層主要應用到了觀察者模式,也是第一次接觸這個模式。
部分介面展示
主頁
賬單分析介面
設計比較多的資料處理,使用MPAndroidChart開源庫生成圖表。
紀念日介面
主要功能仿造Day Matter倒數日
多選刪除
說實話這個功能看著簡單,做起來不簡單。。。在實現的時候用了很多笨方法,效能其實不是很好,勝在測試數量不大(幾千條)的時候也不會造成不流暢的現象,在以後掌握了新知識的時候會對這一塊進行重構。
總結
暫時先到這啦,先佔個坑。以後慢慢對專案中的比較重要的地方爬坑。