#程式設計
##建立新的模組
build檔案的配置,採用和root專案相同配置,需要引用基礎庫,服務庫(不需要服務庫,也可不引入)示例:
apply plugin: 'com.android.library' apply plugin: 'com.jakewharton.butterknife' android { compileSdkVersion rootProject.ext.compileSdkVersion defaultConfig { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion } compileOptions { targetCompatibility 1.8 sourceCompatibility 1.8 } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation project(':common') implementation project(':service') annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT' }複製程式碼
宣告服務
- 在service模組中的component包中,建立相模組服務
- 服務介面需要繼承基類ComponentService
- 在constant包中的ComponentConstant下,記錄下服務相應的實現類路徑
- 在IntentParamsConstants類下,宣告Intent帶引數跳轉的key(命名規則:TNTENT-PARAM-模組名稱-業務)
- 在服務介面中,務必寫清註釋,引數含義及方法業務
註冊服務到Application,示例:
Route.getInstance().registerComponent(ComponentConstant.USER);
- 其他命名:
- 所以命名:包括頁面,佈局,圖片,資原始檔,請在開頭增加模組名稱
- 公共資源圖片:請放入common庫中,並已common開頭
- 控制元件id命名:模組-控制元件型別-業務 eg:news-tv-list-title
開發細節
- Acticity繼承com.gtmc.common.base.BaseActivity
- bindLayout()方法設定佈局ID,自動實現初始化
- widgetClick()實現點選時間
- initParms()可獲取Intent傳入引數
- initView()實現控制元件初始化
- doBusiness()實現業務操作
- 載入中loading,直接使用loading()方法 取消使用loaded()
- showToast()展示簡短提示
- Fragment繼承同com.gtmc.common.base.BaseFragment
- 列表控制元件
- com.yonyou.common.widget.ListView 整合下拉重新整理及載入更多
- RecyclerView
- 請捨棄XListView的使用
- 定位
- com.gtmc.common.utils.Location
Location.getLocation(mContext, location -> { //do something });
- com.gtmc.common.utils.Location
- 圖片載入
- com.yonyou.common.image.ImageLoad
ImageLoad.loadUrlFitCenter(mContext,view, url);
- com.yonyou.common.image.ImageLoad
- 日誌系統
com.yonyou.common.log.Log - Json解析
- com.yonyou.common.utils.JsonUtils:適用於單獨獲取某個位元組
- com.yonyou.common.utils.GsonUtils:適用於bean及list轉換
網路請求
com.yonyou.common.net.self.BaseHttp
new BaseHttp(HttpFactory.HttpType.OKHTTP) .post() .url(InterfaceNames.GETNEWSINFORMATION) .addParam("code", params.code)//是否專屬店0:是 1:不是 .addParam("lat", params.lat) .addParam("lng", params.lon) .addParam("pageSize", Constants.PAGE_SIZE) .addParam("pageNo", params.pageNo) .addParam("cityName", params.cityName) .addParam("type", params.type) .send(callBack);複製程式碼
- 架構
- mvp模式
- Model:網路請求,資料提取,提供增刪改查方法
- Presenter:繫結model及view,刪選處理資料,通知view重新整理
- View:頁面重新整理樣式,控制元件初始化,事件下發給Presenter
Dialog
com.afollestad.materialdialogs.MaterialDialog
new MaterialDialog.Builder(mContext) .cancelable(false) .progress(true, 0) .progressIndeterminateStyle(false) .content(msg) .build();複製程式碼
- Acticity繼承com.gtmc.common.base.BaseActivity
- 工具外掛
- GsonFormat json轉為bean的java檔案
- MVPHelper 生成MVP包
- Android ButterKnife Zelezny 初始化控制元件
- 由於元件包都使用的library,所以初始化時,請使用R2來索引ID
##元件互動
例如:首頁模組提供兩個頁面,並且首頁元件調取需要車生活元件的頁面
首頁提供服務
public interface HomeService extends ComponentService { /** * @return 首頁頁面 */ Fragment getHomePage(); /** * @return 車生活頁面 */ Fragment getCarLife(); }複製程式碼
車生活提供頁面
public interface CarLifeService extends ComponentService { /** * @return 新聞資訊頁面 */ Fragment getNewListPage(); /** * 進入新聞資訊詳情頁面 * * @param context 上下文 * @param newsId 新聞ID */ void goNewDetailsPage(Context context, String newsId); }複製程式碼
MainActivity中獲取首頁元件, 並載入其頁面
mHomeService= (HomeService) Route.getInstance().getComponentService(HOME); mHomeService.getHomePage(); mHomeService.getCarLife(); 複製程式碼
車生活頁面獲取
mCarLifeService = (CarLifeService) Route.getInstance().getComponentService(ComponentConstant.CARLIFE);複製程式碼
##提交規範
- 以bug、需求、優化等為一個點做提交準則
提交已增加字首
【需求】+【編號】xxxxxxxx 【BUG】+【編號】xxxxxxxx 【優化】+【模組】xxxxxxxx 【資源】+【替換、新增、刪除】xxxxxxxx 【配置】+【升級、新增、刪除】(如第三方庫,build檔案)xxxxxxxx複製程式碼