戰爭即和平
自由即奴役
無知即力量
——《1984》
前言
由於現在的項目開發多數採用 mvc , mvp 等帶有結構性的架構進行開發。所以必不可少的要進行模板文件的編寫,費時費力。故採用 AndroidStudio 的 TemplateBuilder 插件完成模板代碼的自動生成。
最終效果:一鍵生成一套模板文件
----->
正文
一、準備
安裝 TemplateBuilder 插件
Preference - > Plugins -> 搜索 TemplateBuilder
安裝後重啓 AS
二、實踐
實現一個同時生成 Activity 和 Layout 文件的模板
1. 正常創建一個 Activity ,開始編寫模板
TemplateActivity.java
package ${packageName};
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class ${ActivityName}Activity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_${LayoutName});
}
}
- packageName 對應你點擊新建的目錄。如果其中還有層級,可以寫成 ${packageName}.view
- 使用 ${} 聲明的是動態傳入的參數
activity_template.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
現在的目錄結構
2. 生成模板
同時選中兩個文件
按 ALT + T ,彈出模板信息編輯框
填寫模板信息
add 添加模板參數,就是上文說的 ${ActivityName} ${LayoutName}
具體內容說明
- Template Category 對應模板的分類,對應選擇導入模板時的模板分類,比如AS原本就有的Activity分類(我們經常在這個分類裏面使用EmptyActivity),這裏默認值是電腦的用戶名。
- Template Name 對應模板名稱,對應選擇導入模板時的模板名稱,默認值是當前的Module名稱。
- Template Description 對應模板描述信息,對應導入模板時彈出的導入界面的文字描述,默認爲空。
- Template Folder 對應生成模板所存放的位置,如果是Mac操作系統則默認爲/Applications/Android Studio.app/Contents/plugins/android/lib/templates, Windows系統的話由於差異比較大,就默認爲空了,可以自行配置[Android Studio安裝目錄]/plugins/android/lib/templates(這裏只需要配置一次即可,插件將自動保存該位置)。(最好要能找到該目錄,後期更改模板方便)
- Input data區域
關於Input data的使用,先解釋下每個屬性對應的含義
- id 變量名,必須和模板中使用的變量名對應,必填,比如上面模板文件中使用${testName},這裏就應該填上對應的名稱,testName
- name 變量簡介,必填
- type 變量類型,string和boolean兩種,通過下拉框選擇,必填
- default 變量對應的默認值,選填
- help 添加該變量時的提示信息,選填
注意:不要使用中文,因爲編碼問題所以使用中文會變成亂碼
點擊 next ,進入更詳細的配置
- recipe.xml.ftl
- <merge>標籤那行作用是將定義的 AndroidManifest.xml.ftl 文件轉化爲 manifest.xml後與項目中的 AndroidManifest.xml 文件合併,完成了 Activity 在 AndroidManifest.xml 文件中註冊的工作
- instantiate 標籤是 recipe.xml.ftl 文件的核心標籤,它的作用是將 from 屬性的 ftl 文件轉化爲 to 屬性的文件。
- open 文件會打開對應的文件
修改生成的文件名
- AndroidManifest.xml.ftl
因爲是 merge 操作,我們就添加註冊 Activity 行
點擊 ok ,底部彈出如下。重啓 AS 後生效
其他配置
template.xml,是控制創建時候的ui面板配置的,像在上一步中填寫的,名稱,默認值,類型等最終都是生成在這個文件中,當某項配置出錯時,可以根據需要做調整,不用每次都Alt+T新建模板。
build.gradle.ftl,是添加依賴使用的,我們沒有用到,所以不需要配置。
globals.xml.ftl,是全局一些配置,比如resOut是指定資源輸出文件夾。默認就ok了
效果
一鍵添加完成,可自行擴展匹配自己項目的模板,如文章開頭效果
三、總結
使用 AndroidStudio 編寫自定義模板需要這幾步:
- AS 安裝 TemplateBuilder 插件
- 新建模板文件
- 重啓 AS
使用模板的好處:
- 省時省力
- 代碼結構規範化
- 很舒服
四、坑 及 小技巧
- ${packageName} 不要寫成大寫的 P
- 想要修改模板文件不需要每次都去 ALT + T ,可以找到自己的模板文件目錄,mac 的默認目錄可以通過
content -> plugins -> android -> lib -> templates 裏面找到
root 文件就是我們編寫 activity 等模板文件位置,直接修改,記得重啓 AS
- 如果你不幸沒有成功,可以點擊 IDE 右下角彈出的 error ,很容易定位到問題