Android Studio Template(模板)開發(fā)

引言

Android Studio提供的代碼模板可幫助我們減少重復編寫同一段代碼的負擔,而且可以遵循優(yōu)化后的設(shè)計和標準。AS采用的是Apache FreeMarker模板引擎。

在網(wǎng)上,關(guān)于模板開發(fā)的資料比較少,而且Studio版本較低,也缺少實際開發(fā)中很多功能的示例(比如說Studio在加入kotlin后,我們怎么生成kotlin的模板)。這篇文章將基于TemplateBuilder模板插件,簡化模板生成的難度。

環(huán)境:

Android Studio 3.1.1

TemplateBuilder 2.0

一、TemplateBuilder

簡單介紹下TemplateBuilder的使用。

1.插件安裝

在Studio菜單欄選擇【File】-【Settings】,在左側(cè)菜單中選擇【Plugins】,點擊【Browse repositories】。在彈出框中輸入TemplateBuilder,點擊安裝并重啟Studio后生效。

這里寫圖片描述

2.創(chuàng)建模板

1.定義模板:

這里定義了activityName、textViewName變量,之后在生成模板時,由用戶輸入。

publicclass${activityName} extends AppCompatActivity {privateTextView ${textViewName};@OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);? ? ? ? setContentView(R.layout.activity_main);? ? }}

2.生成模板

選中模板文件,按下【ALT + T】(或在Tools下選擇Generate Template),配置模板信息

這里寫圖片描述

屬性說明:

Template Category 對應模板的分類,對應選擇導入模板時的模板分類,這里默認值是電腦的用戶名。

Template Name 對應模板名稱,對應選擇導入模板時的模板名稱,默認值是當前的Project名稱。

Template Description 對應模板描述信息,對應導入模板時彈出的導入界面的文字描述,默認為空。

Template Folder 對應生成模板所存放的位置,如果是Mac操作系統(tǒng)則默認為/Applications/Android Studio.app/Contents/plugins/android/lib/templates, Windows系統(tǒng)的話由于差異比較大,就默認為空了,可以自行配置[Android Studio安裝目錄]/plugins/android/lib/templates(這里只需要配置一次即可,插件將自動保存該位置)。

Input data 配置模板變量

在【Configure Template Data】下點擊【add】配置剛才模板中定義的變量,配置完畢后點擊【Finish】。

這里寫圖片描述

重啟Studio后就可使用該自定義模板。

這里寫圖片描述

關(guān)于Input data的使用,先解釋下每個屬性對應的含義

id 變量名,必須和模板中使用的變量名對應,必填

name 變量簡介,必填

type 變量類型,string和boolean兩種,通過下拉框選擇,必填

default 變量對應的默認值,選填

help 添加該變量時的提示信息,選填

二、定義模板

這里我使用TemplateBuilder插件生成mvp的模板。通過修改相關(guān)的屬性,實現(xiàn)Activity和layout動態(tài)生成,并在AndroidManifest.xml中注冊。最后添加kotlin的模板配置,這樣模板最終完成。

1.創(chuàng)建Java模板

首先創(chuàng)建一個MVP的Activity,將動態(tài)的屬性聲明為變量。

package${packageName};importandroid.os.Bundle;importcom.blackbox.medicalpension.common.mvp.base.BaseCommonActivity;importcom.blackbox.medicalpension.common.mvp.mvp.BasePresenter;importorg.jetbrains.annotations.Nullable;importjava.util.List;publicclass${activityClass} extends BaseCommonActivity{@OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);? ? ? ? setContentView(R.layout.${layoutName});? ? ? ? initTitleWithBack("${titleName}");? ? }@Nullable@OverridepublicList> createPresenter() {returnnull;? ? }}

創(chuàng)建對應的Layout布局文件

<?xml version="1.0"encoding="utf-8"?>

2.模板生成

選中兩個模板文件,點擊【ALT + T】,彈出【Configure Template Data】窗口。定義activityClass、layoutName、titleName三個變量,并【Finish】,生成模板。

這里寫圖片描述

模板文件存放在...\Android Studio\plugins\android\lib\templates下

這里寫圖片描述

模板文件后綴名都是以【.ftl】結(jié)尾。

globals.xml.ftl 全局變量文件 存放的是一些全局變量

recipe.xml.ftl 配置要引用的模板路徑以及生成文件的路徑

template.xml 模板的配置信息,以及要輸入的參數(shù).定義了模板的流程框架 基本結(jié)構(gòu)

template_blank_activity.png 顯示的縮略圖(只是展示用)

LinActivity.java.ftl Activity模板文件

1.修改配置

進入到...\Android Studio\plugins\android\lib\templates\linw9目錄下

1.修改template.xml文件

為方便用戶輸入Activity名稱或Layout名稱,自動提示Layout或Activity名稱,需要在文件中添加兩個屬性:

constraints="class|unique|nonempty"

suggest="${layoutToActivity(layoutName)}"

suggest="${activityToLayout(activityClass)}"

<?xml version="1.0"?><!-- input data --><!-- 128x128 thumbnails relative to com.puke.template.xml --><!-- default thumbnail is required -->template_cover.png

2.修改AndroidManifest.xml文件

進入到...\Android Studio\plugins\android\lib\templates\linw9\LinMvpActivity\root 目錄下,打開AndroidManifest.xml.ftl文件,修改內(nèi)容讓Studio自動注冊Activity。需要注意的是:需要對AndroidManifest進行代碼格式化(Format),不然使用的時候Studio可能會提示Merge。

只針對Java代碼的模板到此結(jié)束,重新啟動Studio后即可使用該模板。

<?xml version="1.0"encoding="utf-8"?>

3.增加Kotlin模板

在網(wǎng)上,我沒有查找到關(guān)于Kotlin模板配置的相關(guān)文章,這里給大家講解下我的方法。

我是通過學習Studio自帶的模板,從中找到了配置Kotlin模板的方法,僅供大家參考。

1.創(chuàng)建Kotlin模板

進入到...\Android Studio\plugins\android\lib\templates\linw9\LinMvpActivity\root\src\app_package目錄下,直接創(chuàng)建kotlin模板

package${packageName}importandroid.os.Bundleimportcom.blackbox.medicalpension.common.mvp.base.BaseCommonActivityimportcom.blackbox.medicalpension.common.mvp.mvp.BasePresenterimportkotlinx.android.synthetic.main.${layoutName}.*class${activityClass} : BaseCommonActivity(){override funonCreate(savedInstanceState: Bundle?){super.onCreate(savedInstanceState)? ? ? ? setContentView(R.layout.${layoutName})? ? ? ? initTitleWithBack("${titleName}")? ? }override funcreatePresenter(): MutableList> ?{returnnull}}

2.修改recipe.xml.ftl

進入到...\Android Studio\plugins\android\lib\templates\linw9\LinMvpActivity目錄下,打開recipe.xml.ftl

將java改為${ktOrJavaExt}變量。

<?xml version="1.0"?>

3.修改globals.xml.ftl

進入到...\Android Studio\plugins\android\lib\templates\linw9\LinMvpActivity目錄下,打開globals.xml.ftl

添加ktOrJavaExt變量聲明:

這里寫圖片描述

<?xml version="1.0"?><#assigngenerateKotlin=(((includeKotlinSupport!false)|| (language!'Java')?string=='Kotlin'))>

4.結(jié)束

重啟Studio后,就可以生成Java或Kotlin的代碼。對于寫的不好的地方,希望大家多提建議。

作者:JustinMiller

鏈接:http://www.itdecent.cn/p/e3548f441440

來源:簡書

簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容