Android Studio Activity模版開發
為什麼要使用模版開發
在開發之中,我們總會遇到一些比較通用的模組,比如啟動頁,登陸功能,網路請求,MVP模式等等。有些功能甚至需要重複使用多次,我們通常的做法是把之前的模組拷貝過來,修改名字,再修改內容。如果使用了程式碼模板的話,會減少很多重複的工作。
我們經常使用的系統的模版的結構如下圖所示。如果你想自定義一個Activity模版或其他類模版,你可以把這2個檔案拷貝過去,修改一下就行了。

這種方式稍微複雜一些,因為新手大都對這幾個檔案不熟悉,不知道怎麼修改。 我推薦一種外掛化的方式(強烈推薦)
https://www.jianshu.com/p/e3548f441440模板檔案字尾名都是以【.ftl】結尾。
- globals.xml.ftl 全域性變數檔案 存放的是一些全域性變數
- recipe.xml.ftl 配置要引用的模板路徑以及生成檔案的路徑
- template.xml 模板的配置資訊,以及要輸入的引數.定義了模板的流程框架 基本結構
- template_blank_activity.png 顯示的縮圖(只是展示用)
-root Activity模板檔案
globals.xml.ftl
<?xml version="1.0"?> <globals> <global id="resOut" value="${resDir}" /> <global id="srcOut" value="${srcDir}/${slashedPackageName(packageName)}" /> <global id="relativePackage" value="<#if relativePackage?has_content>${relativePackage}<#else>${packageName}</#if>" /> </globals>
定義一些全域性的變數,可以看到其內部有 <global>
標籤,分別定義id,type,預設值。同理,我們可以通過id的值訪問到該值。
recipe.xml.ftl
<?xml version="1.0"?> <recipe> <instantiate from="root/src/app_package/MVPActivity.java.ftl" to="${escapeXmlAttribute(srcOut)}/${activityName}Activity.java" /> <merge from="root/AndroidManifest.xml.ftl" to="${escapeXmlAttribute(manifestOut)}/AndroidManifest.xml" /> <merge from="root/${resIn}/values/strings.xml.ftl" to="${escapeXmlAttribute(resOut)}/values/strings.xml" /> </recipe>
-
instantiate : 把Activity模版或其他模版拷貝到我們的專案中,並且會更改我們自定義的引數。
-
merge : 合併的意思,比如將我們使用到的strings.xml合併到我們的專案的stirngs.xml中
-
copy :從root中copy檔案到我們的目標目錄,比如drawable、anim等資料夾。
-
open:在程式碼生成後,開啟指定的檔案,比如我們新建一個Activity後,預設就會將該Activity開啟。
template.xml
<?xml version="1.0"?> <template format="5" revision="5" name="MVPActivity" minApi="7" minBuildApi="14" description="mvp"> <category value="Activity" /> <formfactor value="Mobile" /> <!-- input data --> <parameter id="activityName" name="Activity Nme" type="string" default="MVP" help="" /> <!-- 128x128 thumbnails relative to com.puke.template.xml --> <thumbs> <!-- default thumbnail is required --> <thumb>template_cover.png</thumb> </thumbs> <globals file="globals.xml.ftl" /> <execute file="recipe.xml.ftl" /> </template>
- <template>中的
name
屬性,對應新建Activity
時顯示的名字 - <category>對應
New
的類別為Activity
parameter,部分屬性介紹:
id name type constraints suggest default help
template.xml的最下面的部分引入了globals.xml.ftl和recipe.xml.ftl。
我建立了啟動頁和MVP模式的2個模版,大家可以參考一下。後續有新的,會繼續新增上去。
https://github.com/zhouxu88/CustomTemplate