在開發之中,咱們總會遇到一些比較通用的模塊,好比啓動頁,登錄功能,網絡請求,MVP模式等等。有些功能甚至須要重複使用屢次,咱們一般的作法是把以前的模塊拷貝過來,修更名字,再修改內容。若是使用了代碼模板的話,會減小不少重複的工做。java
咱們常常使用的系統的模版的結構以下圖所示。若是你想自定義一個Activity模版或其餘類模版,你能夠把這2個文件拷貝過去,修改一下就好了。面試
這種方式稍微複雜一些,由於新手大都對這幾個文件不熟悉,不知道怎麼修改。小程序
模板文件後綴名都是以【.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的值訪問到該值。網絡
<?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中app
copy :從root中copy文件到咱們的目標目錄,好比drawable、anim等文件夾。框架
open:在代碼生成後,打開指定的文件,好比咱們新建一個Activity後,默認就會將該Activity打開。佈局
<?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>
name
屬性,對應新建Activity
時顯示的名字New
的類別爲Activity
parameter,部分屬性介紹:性能
id
:惟一標識,最終經過該屬性的值,獲取用戶輸入值(文本框內容,是否選中)name
:界面上的相似label的提示語type
: 輸入值類型constraints
:填寫值的約束suggest
:建議值,好比填寫ActivityName的時候,會給出一個佈局文件的建議值。default
:默認值help
:底部顯示的提高語template.xml的最下面的部分引入了globals.xml.ftl和recipe.xml.ftl。
想學習更多Android知識,請加入Android技術開發企鵝交流 7520 16839
進羣與大牛們一塊兒討論,還可獲取Android高級架構資料、源碼、筆記、視頻
包括 高級UI、Gradle、RxJava、小程序、Hybrid、移動架構、React Native、性能優化等全面的Android高級實踐技術講解性能優化架構思惟導圖,和BATJ面試題及答案!
羣裏免費分享給有須要的朋友,但願可以幫助一些在這個行業發展迷茫的,或者想系統深刻提高以及困於瓶頸的
朋友,在網上博客論壇等地方少花些時間找資料,把有限的時間,真正花在學習上,因此我在這免費分享一些架構資料及給你們。但願在這些資料中都有你須要的內容。