一個淺封裝、快速開發(fā)的 Android MVVM 開發(fā)框架

FastAAC

  • 上手特別容易,不會 MVVM 開發(fā)模式的都可以快速上手。
  • 一個淺封裝、快速開發(fā)的 Android MVVM 開發(fā)框架。
  • 基于 Android Architecture Components(AAC)。
  • 項目使用 Androidx 搭建。
  • 只使用官方部分的 MVVM 和 databind 的部分特性。

Lib 結(jié)構(gòu)

Lib 結(jié)構(gòu)

優(yōu)點

  • 簡單、淺封裝、擴展性強

    代碼簡單,沒有過度的封裝,上手非常容易,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ò)時:

    postPageState(new BaseResult(-1));
    

    數(shù)據(jù)為空時:

    public void clickNoData() {
        BaseResult<Object> baseResult = new BaseResult<>();
        baseResult.setErrorCode(0);
        baseResult.setData(null);
        postPageState(baseResult);
    }
    

具體使用

見 demo 中的 MainActivity。
項目地址: https://github.com/ldlywt/FastAAC

END

大家有什么更好的建議請?zhí)岢?,一起學(xué)習(xí)進步。

既然來了,麻煩動動手指,點個star,非常感謝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容