FastAAC
- 上手特別容易底扳,不會 MVVM 開發(fā)模式的都可以快速上手。
- 一個淺封裝贡耽、快速開發(fā)的 Android MVVM 開發(fā)框架。
- 基于 Android Architecture Components(AAC)鹊汛。
- 項(xiàng)目使用 Androidx 搭建蒲赂。
- 只使用官方部分的 MVVM 和 databind 的部分特性。
Lib 結(jié)構(gòu)
優(yōu)點(diǎn)
-
簡單刁憋、淺封裝滥嘴、擴(kuò)展性強(qiáng)
代碼簡單,沒有過度的封裝至耻,上手非常容易若皱,Lib 只有十幾個類。
除了 Android 原生的依賴以外尘颓,
只集成了一個工具庫utilcodex
走触,事件總線live-event-bus
,頁面狀態(tài)管理loadsir
疤苹,
狀態(tài)欄沉浸式工具immersionbar
互广,并且都是可以插拔的,不需要替換即可卧土。圖片加載庫惫皱,網(wǎng)絡(luò)請求庫等其他第三方 Lib 可根據(jù)個人興趣自己選擇集成即可。
-
快速開發(fā)
通過泛型可以減少很多不必要的重復(fù)代碼尤莺,以前每個 Activity 都需要寫如下重復(fù)代碼旅敷,例如:
ActivityMainBinding dataBinding = DataBindingUtil.setContentView(this, R.layout.activity_main); MainVm mainVm = ViewModelProviders.of(this).get(MainVm.class);
現(xiàn)在只需要在類名上面寫上泛型即可,自動解析:
public class MainActivity extends AbsMvvmActivity<MainVm, ActivityMainBinding> {}
-
自動頁面狀態(tài)管理
日常開發(fā) Activity 的頁面狀態(tài)有:有網(wǎng)颤霎、無網(wǎng)絡(luò)媳谁、空頁面涂滴、loading加載頁面等各種頁面。
使用 LiveData 的監(jiān)聽集成在 BaseActivity 中韩脑,根據(jù) BaseResult 返回的 code 來自動管理頁面顯示狀態(tài)氢妈。
switch (httpResult.getErrorCode()) { case BaseResult.SUCCESS_CODE: if (httpResult.getData() != null) { resultCode = SuccessCallback.class; } else { resultCode = EmptyCallback.class; } break; default: resultCode = ErrorCallback.class; }
如果想手動改變頁面狀態(tài),只需在 ViewModel 中非常簡單的設(shè)置段多,例如:
無網(wǎng)絡(luò)時(shí):
postPageState(new BaseResult(-1));
數(shù)據(jù)為空時(shí):
public void clickNoData() { BaseResult<Object> baseResult = new BaseResult<>(); baseResult.setErrorCode(0); baseResult.setData(null); postPageState(baseResult); }
具體使用
見 demo 中的 MainActivity首量。
項(xiàng)目地址: https://github.com/ldlywt/FastAAC
END
大家有什么更好的建議請?zhí)岢觯黄饘W(xué)習(xí)進(jìn)步进苍。
既然來了加缘,麻煩動動手指,點(diǎn)個star觉啊,非常感謝拣宏。