Android優(yōu)秀的開發(fā)框架有很多,很多功能都有成熟的解決方案,比如網(wǎng)絡(luò)請(qǐng)求、依賴注入、圖片加載、數(shù)據(jù)庫(kù)等都有很多開源的框架可以直接使用,我們可以站在巨人的肩膀上,組合一套自己常用的開發(fā)框架,也可以作為公司的開發(fā)框架,達(dá)到快速開發(fā)的目的。
選擇框架的原則:
1、 能滿足自己的業(yè)務(wù)需求
選擇一個(gè)框架前首先考慮是否能滿足自己或公司的需求,比較流行的框架基本上能滿足我們大部分的需求
2、 主流的
選擇主流的框架網(wǎng)上相關(guān)的資源也多,團(tuán)隊(duì)成員都接觸過(guò)的概率也大
3、 持續(xù)更新的
Android的發(fā)展很快,持續(xù)更新的框架能更好適配新版本
結(jié)合自己和公司開發(fā)的情況以及上面的原則,選了下面的框架組合來(lái)搭建自己的Android開發(fā)框架。
MVP模式
MVP 是現(xiàn)在很流行的開發(fā)模式,全稱是 Model-View-Presenter,程序邏輯寫在 Presenter 中, View 并不直接訪問 Presenter,而是通過(guò)定義好的接口交互,達(dá)到視圖層和邏輯層分離的目的,并且 Presenter 可以被重用。使用 MVP 模式開發(fā),代碼的結(jié)構(gòu)會(huì)非常清晰,缺點(diǎn)是會(huì)增加不少文件。
GitHub Star:22k
GitHub:https://github.com/googlesamples/android-architecture
網(wǎng)絡(luò)請(qǐng)求:
Retrofit2.0 是基于 okHttp 的網(wǎng)絡(luò)請(qǐng)求框架,遵行 RESTful 設(shè)計(jì)風(fēng)格。
GitHub Star:24k
GitHub:https://github.com/square/retrofit
依賴注入:
ButterKnife 是一個(gè)注解框架,可以快速綁定 view 和 click 事件,取代 findViewById,簡(jiǎn)化代碼。
GitHub Star:18k
GitHub:https://github.com/JakeWharton/butterknife
圖片加載:
glide 是 Google 推薦的圖片加載庫(kù),專注于流暢的滾動(dòng)。
GitHub Star:18k
GitHub:https://github.com/bumptech/glide
選擇圖片:
Matisse 是一個(gè)知乎開源的圖片選擇器。
GitHub Star:8.7k
GitHub:https://github.com/zhihu/Matisse
異步:
RxAndroid 是 RxJava 在 Android 中的應(yīng)用,使用觀察者模式“優(yōu)雅”的實(shí)現(xiàn)異步處理。
GitHub Star:14k
GitHub:https://github.com/ReactiveX/RxAndroid
響應(yīng)式:
RxBinding 是 RxJava/RxAndroid 下UI組件響應(yīng)式綁定的支持庫(kù)。
GitHub Star:6.4k
GitHub:https://github.com/JakeWharton/RxBinding
事件總線:
RxBus 是 RxAndroid 下的事件發(fā)布/訂閱輕量級(jí)框架,簡(jiǎn)化組件間的通信。
GitHub Star:1.3k
GitHub:https://github.com/AndroidKnife/RxBus
JSON:
Gson 是 Google 公司發(fā)布的一個(gè)開放源代碼的 Java 庫(kù),主要用途為序列化 Java 對(duì)象為 JSON 字符串,或反序列化 JSON 字符串成 Java 對(duì)象。
GitHub Star:10k
GitHub:https://github.com/google/gson
下拉刷新/上拉加載:
強(qiáng)大的下拉刷新和上拉加載庫(kù)
GitHub Star:15k
GitHub:https://github.com/scwang90/SmartRefreshLayout
數(shù)據(jù)庫(kù):
LitePal 是CSDN大神郭霖的開源項(xiàng)目。大部分項(xiàng)目都不需要用到數(shù)據(jù)庫(kù),或者簡(jiǎn)單的數(shù)據(jù)庫(kù)就可以滿足,LitePal 就可以滿足我的需求,跟著郭大神學(xué)數(shù)據(jù)庫(kù)。
GitHub Star:4k
GitHub:https://github.com/LitePalFramework/LitePal
調(diào)試:
logger 是一個(gè)著名的開源日志庫(kù),支持打印線程的信息、類的信息、方法的信息、格式打印json/xml、點(diǎn)擊鏈接跳轉(zhuǎn)到源碼等功能,方便調(diào)試。
GitHub Star:7.7k
GitHub:https://github.com/orhanobut/logger
權(quán)限:
RxPermissions 是一個(gè)統(tǒng)一處理 Android 運(yùn)行時(shí)權(quán)限問題的庫(kù)。我之前也寫過(guò)一篇使用教程: Android 6.0 運(yùn)行時(shí)權(quán)限
GitHub Star:4.7k
GitHub:https://github.com/tbruyelle/RxPermissions
Banner輪播圖:
Android廣告圖片輪播控件,支持無(wú)限循環(huán)和多種主題,可以靈活設(shè)置輪播樣式、動(dòng)畫、輪播和切換時(shí)間、位置、圖片加載框架等!
GitHub Star:7.5k
GitHub:https://github.com/youth5201314/banner
PickerView:
仿iOS時(shí)間選擇器、省市區(qū)三級(jí)聯(lián)動(dòng)
GitHub Star:8.8k
GitHub:https://github.com/Bigkoo/Android-PickerView