現(xiàn)在A(yíng)ndroid 項(xiàng)目中基本都是MVP或MVVM架構(gòu)的,相比之前的MVC架構(gòu)MVP需要為Presenter層創(chuàng)建單獨(dú)的類(lèi),有些麻煩。為了簡(jiǎn)化創(chuàng)建類(lèi)的過(guò)程,可以對(duì)Android Studio的模板文件進(jìn)行改造,在新建Activity或Fragment時(shí)自動(dòng)創(chuàng)建Presenter層文件。
基本知識(shí)
- Android Studio模板文件位置 AndroidStudio\plugins\android\lib\templates\gradle-projects。
- Android Studio中的模板使用FreeMarker ,不了解的可以到官網(wǎng)看看。
- 模板主要由三個(gè)文件構(gòu)成分別為 template.xml(描述文件),globals.xml.ftl(變量),recipe.xml.ftl(生成新的文件)。
開(kāi)始改造
1 從模板中選出自己常用的activity和fragment模板,打開(kāi)template.xml,修改template中的name
<template
format="5"
revision="5"
name="MVP Activity" //模板名稱(chēng),不能重復(fù)
minApi="9"
minBuildApi="14"
description="Creates a new mvp activity">
2 根據(jù)需要添加新的參數(shù),因?yàn)槲伊?xí)慣把view,presenter,contract放在新的package中,我添加了下面兩個(gè)參數(shù),分別代表是否創(chuàng)建新package,和package名稱(chēng)
<parameter
id="createPackage"
name="create new package"
type="boolean"
default="true"
help="create a new package" />
<parameter
id="activityPackage"
name="activity package path"
type="string"
default="${classToResource(activityClass)}"
suggest="${classToResource(activityClass)}"
/>
3 在recipe.xml.ftl中添加處理過(guò)程
<#if createPackage>
<instantiate from="root/src/app_package/SimpleActivity.java.ftl"
to="${escapeXmlAttribute(srcOut)}/${escapeXmlAttribute(activityPackage)}/${activityClass}.java" />
<open file="${escapeXmlAttribute(srcOut)}/${escapeXmlAttribute(activityPackage)}/${activityClass}.java" />
<instantiate from="root/src/app_package/SimpleContract.java.ftl"
to="${escapeXmlAttribute(srcOut)}/${escapeXmlAttribute(activityPackage)}/${contractName}.java" />
<open file="${escapeXmlAttribute(srcOut)}/${escapeXmlAttribute(activityPackage)}/${contractName}.java" />
<instantiate from="root/src/app_package/SimplePresenter.java.ftl"
to="${escapeXmlAttribute(srcOut)}/${escapeXmlAttribute(activityPackage)}/${presenterName}.java" />
<open file="${escapeXmlAttribute(srcOut)}/${escapeXmlAttribute(activityPackage)}/${presenterName}.java" />
<#else>
<instantiate from="root/src/app_package/SimpleActivity.java.ftl"
to="${escapeXmlAttribute(srcOut)}/${activityClass}.java" />
<open file="${escapeXmlAttribute(srcOut)}/${activityClass}.java" />
</#if>
4 將修改完的文件放回template文件夾中,重啟Android Studio,不出意外的話(huà)點(diǎn)擊新建activity就可以在里面找到剛才改過(guò)的模板

新建Activity

新建Activity

新建完成
5 寫(xiě)完后最好將自己的模板文件另外保存一份,AndroidStudio更新會(huì)將自己放入的模板文件刪除。