【小鵝事務所】Android記錄事務APP —— MVVM + Flow+ Room + Jetpack 實現

語言: CN / TW / HK

介紹

這個APP是弄畢業設計的時候寫的,也是一個比較成規模的個人專案,斷斷續續花了幾個月的時間,將會分為多篇文章記錄一下。剛開始寫這個APP的時候也僅僅看完郭霖老師的一本《第一行程式碼》。由於在學習的過程中用到了很多別人的成果,糾結了很久發不發出來,現在發出來用來記錄我的Android學習路程。後續將會用多篇文章爬坑。。。

先上專案連結

https://github.com/MReP1/LittleGooseOffice

專案中的程式碼有部分來源於開原始碼,由於寫的時間離現在有點遠,有些記不清,如有冒犯到,請聯絡本人。 - 日曆模組來自於:https://github.com/huanghaibin-dev/CalendarView 3.7.1開源版本,由於用的時候JCenter跑路了,因此就拷了一份放本地。 - 時間選擇模組來自於呆呆維尼大佬的:https://juejin.cn/post/6844903685441454087 很好用,推薦! - 富文字模組忘了。 - APP封面也忘了,如有抄襲到原作者的設計,請聯絡我。

設計

image.png

在進行APP UI設計的時候參考了Material Design的設計和使用了Error配色。[設計稿連結] (https://www.figma.com/file/V7rofx7MnlAsZUVcmmOZ1i/Account?node-id=712%3A1773)

image.png

由於當代Android手機太大了,因此我主要將操作區域放在了螢幕的中下方,將展示區域放在螢幕的上方,方便使用。

APP中的主要功能為筆記、記賬、記錄事務、紀念日的功能,有很多市面上應用的影子,也比較縫合。

MVVM

本APP架構使用了MVVM架構。

Model 層

在資料持久上使用了Room資料庫,使用DataStore存放一些不是很重要的資料,沒有架設伺服器。在使用Room的時候遇到了比較多的坑,並且網上常見的教程都是關於簡單使用,場景一旦複雜就沒什麼教程了,之後有時間會寫一期說說。

Frame 248.png

ViewModel 層

ViewModel使用了Jetpack同名框架ViewModel,這裡就沒什麼好說的,主要承接View和Model層之間的中間人。

Frame 291.png

View 層

View層主要應用到了觀察者模式,也是第一次接觸這個模式。

Frame 276.png

部分介面展示

主頁

Frame 315.png

賬單分析介面

設計比較多的資料處理,使用MPAndroidChart開源庫生成圖表。

Frame 289.png

紀念日介面

主要功能仿造Day Matter倒數日

Frame 310.png

多選刪除

說實話這個功能看著簡單,做起來不簡單。。。在實現的時候用了很多笨方法,效能其實不是很好,勝在測試數量不大(幾千條)的時候也不會造成不流暢的現象,在以後掌握了新知識的時候會對這一塊進行重構。

Frame 327.png

總結

暫時先到這啦,先佔個坑。以後慢慢對專案中的比較重要的地方爬坑。