Android Studio輕松構(gòu)建自定義模板的步驟記錄
前言
之前其實有從鴻洋的文章有了解過AS的模板開發(fā),一直想做一些自己經(jīng)常使用的模板,以減少重復(fù)代碼工作,但是發(fā)現(xiàn)太費勁了,所以一直擱置。然后昨天無意中發(fā)現(xiàn)了這個插件TemplateBuilder,然后學習了一下,基本掌握了這個插件的使用,以及快速構(gòu)建自己的模板。下面來分享一下。
一、TempateBuilder插件安裝
環(huán)境:Android Studio 3.1.1
方式1:AS內(nèi)安裝
方式2:本地安裝
先去GitHub開源地址上下載插件壓縮包,或者到JetBrains上的插件地址(要翻 墻哦)下載。
安裝完后記得要重啟AS才能生效?。?!
二、建立自定義模板
以創(chuàng)建TestActivity模板為例。
1. 創(chuàng)建模板所需文件
按照平時的Activity,及Layout文件位置來創(chuàng)建把。(其實也可以隨便找個位置創(chuàng)建以下的模板文件)
Java模板文件:TestSampleActivity.java
package ${packageName}; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.TextView; public class ${testName}Activity extends AppCompatActivity { private TextView mTvLog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_${layoutName}); mTvLog = findViewById(R.id.tv_log); } public void on${testName}(View view) { } private void log(String log) { StringBuilder sb = new StringBuilder(); String s = mTvLog.getText().toString(); sb.append(s).append("\n").append(log); mTvLog.setText(sb.toString()); } public static void start(Context context) { Intent starter = new Intent(context, ${testName}Activity.class); context.startActivity(starter); } }
XML模板文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".${testName}Activity" > <Button android:id="@+id/btn_${testName}" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="on${testName}" android:text="${testName}" android:textAllCaps="false" /> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/tv_log" android:layout_width="match_parent" android:layout_height="wrap_content" tools:text="Log" /> </ScrollView> </LinearLayout>
2. 選中模板文件TestSampleActivity.java及activity_test_sample.xml
3. 使用快捷鍵Alt+T,調(diào)出生成窗口,并填寫相關(guān)信息,及Add添加模板所使用的相關(guān)變量(如${testName})定義
下面來說明一下該界面對應(yīng)的內(nèi)容
- Template Category 對應(yīng)模板的分類,對應(yīng)選擇導(dǎo)入模板時的模板分類,比如AS原本就有的Activity分類(我們經(jīng)常在這個分類里面使用EmptyActivity),這里默認值是電腦的用戶名。
- Template Name 對應(yīng)模板名稱,對應(yīng)選擇導(dǎo)入模板時的模板名稱,默認值是當前的Module名稱。
- Template Description 對應(yīng)模板描述信息,對應(yīng)導(dǎo)入模板時彈出的導(dǎo)入界面的文字描述,默認為空。
- Template Folder 對應(yīng)生成模板所存放的位置,如果是Mac操作系統(tǒng)則默認為/Applications/Android Studio.app/Contents/plugins/android/lib/templates, Windows系統(tǒng)的話由于差異比較大,就默認為空了,可以自行配置[Android Studio安裝目錄]/plugins/android/lib/templates(這里只需要配置一次即可,插件將自動保存該位置)。
- Input data區(qū)域
關(guān)于Input data的使用,先解釋下每個屬性對應(yīng)的含義
- id 變量名,必須和模板中使用的變量名對應(yīng),必填,比如上面模板文件中使用${testName},這里就應(yīng)該填上對應(yīng)的名稱,testName
- name 變量簡介,必填
- type 變量類型,string和boolean兩種,通過下拉框選擇,必填
- default 變量對應(yīng)的默認值,選填
- help 添加該變量時的提示信息,選填
注意:不要使用中文,因為編碼問題所以使用中文會變成亂碼
4.點擊 Next 要進入更詳細的配置
recipe.xml.ftl配置
原內(nèi)容
from是模板文件路徑,to是要生成的文件路徑,如果不修改,默認文件名,就是跟原來的模板文件名一樣。我們需要文件名也一同重新命名,所以要修改一下,調(diào)整為如下配置
<?xml version="1.0"?> <recipe> <instantiate from="root/src/app_package/TestSampleActivity.java.ftl" to="${escapeXmlAttribute(srcOut)}/${testName}Activity.java" /> <instantiate from="root/res/layout/activity_test_sample.xml.ftl" to="${escapeXmlAttribute(resOut)}/layout/activity_${layoutName}.xml" /> <merge from="root/AndroidManifest.xml.ftl" to="${escapeXmlAttribute(manifestOut)}/AndroidManifest.xml" /> </recipe>
AndroidManifest.xml.ftl 配置
原內(nèi)容
從 recipe.xml.ftl配置中,我們就已經(jīng)發(fā)現(xiàn),其實AndroidManifest.xml的生成,是使用merge的方式,也就是跟Git的合并一樣,而這里的模板顯然已經(jīng)不適用,所以需要對應(yīng)調(diào)整為當前新的模板類型。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="${packageName}"> <application> <activity android:name="${packageName}.${testName}Activity"/> </application> </manifest>
其他的
template.xml,是控制創(chuàng)建時候的ui面板配置的,像在上一步中填寫的,名稱,默認值,類型等最終都是生成在這個文件中,當某項配置出錯時,可以根據(jù)需要做調(diào)整,不用每次都Alt+T新建模板。
build.gradle.ftl,是添加依賴使用的,我們沒有用到,所以不需要配置。
globals.xml.ftl,是全局一些配置,比如resOut是指定資源輸出文件夾。默認就ok了。
5. 點擊ok,生成成功,會在底部有提示,重啟AS后才生效。
三、使用
跟平常的新建EmptyActivity一樣操作,我們選擇我們剛剛創(chuàng)建的模板。
四、舉一反三
通過上面步驟,已經(jīng)成功創(chuàng)建了一個快速測試的Activity模板。
最終模板生成的文件所在的位置是Alt+T時候配置的路徑,C:\Android\Studio\plugins\android\lib\templates,在這里也可以看到AS內(nèi)置的模板,比如在C:\Android\Studio\plugins\android\lib\templates\activities\EmptyActivity里面的EmptyActivity模板。
同時可以參考內(nèi)置模板的,template.xml、recipe.xml.ftl、globals.xml.ftl,及root\src下的模板文件,來找到自己需要的配置,比如創(chuàng)建文件之后,打開我們Activity.java文件。在recipe.xml.ftl文件中,加入命令
<open file="${escapeXmlAttribute(srcOut)}/${testName}Activity.java" />
還有其他的,如替換縮略圖之類。
最后
介紹這個控件的文章非常少,我也只找到一篇。作者原介紹,和那一篇文章,都有點零散把,有些地方也不是很清楚,最后經(jīng)過自己的實踐,重新認識了如何自定義模板。最后還是非常感謝該插件作者。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- 詳解 Android中Libgdx使用ShapeRenderer自定義Actor解決無法接收到Touch事件的問題
- 詳解Android Libgdx中ScrollPane和Actor事件沖突問題的解決辦法
- Android使用libgdx實現(xiàn)模擬方向鍵控制角色移動的方法
- Android 游戲引擎libgdx 資源加載進度百分比顯示案例分析
- Android drawable微技巧,你不知道的drawable細節(jié)
- Android指紋識別API講解,一種更快更好的用戶體驗
- Android在Kotlin中更好地使用LitePal
- 詳解Android 檢測權(quán)限的三種寫法
- Android最簡單的狀態(tài)切換布局實現(xiàn)教程
- android自定義環(huán)形對比圖效果
- Libgdx解決部分Android機型鎖屏崩潰的方法
相關(guān)文章
Android開發(fā)技巧之在a標簽或TextView控件中單擊鏈接彈出Activity(自定義動作)
a標簽以及TextView自動識別的特殊文本(網(wǎng)址、電話號、Email等),這些都可以通過單擊來觸發(fā)不同的動作;但如果讀者想在單擊鏈接時執(zhí)行任意自定義的動作,那么將要介紹的一定是你想要的了2013-01-01Android列表實現(xiàn)(1)_數(shù)組列表實例介紹
最近開始學習android的ui,先上幾個相關(guān)的例子,后續(xù)還會有更新,感興趣的朋友可以研究下2012-12-12Android 詳解自定義圓角輸入框和按鈕的實現(xiàn)流程
對于安卓程序員來說,自定義view簡直不要太重要,畢竟有很多功能,譬如圓形頭像這些,用單純的原生非常難以實現(xiàn),而用自定義view,簡直分分鐘,今天我們來實現(xiàn)自定義圓角輸入框和按鈕,大家可以跟著練習,掌握技巧2021-11-11Android實現(xiàn)仿淘寶購物車增加和減少商品數(shù)量功能demo示例
這篇文章主要介紹了Android實現(xiàn)仿淘寶購物車增加和減少商品數(shù)量功能,結(jié)合實例形式分析了Android實現(xiàn)的淘寶購物車商品數(shù)量變換與計算相關(guān)技巧,需要的朋友可以參考下2016-07-07Android開發(fā)中l(wèi)ibs和jinLibs文件夾的作用詳解
這篇文章主要給大家介紹了關(guān)于Android開發(fā)中l(wèi)ibs和jinLibs文件夾的作用的相關(guān)資料,文中通過圖文及示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-09-09Android筆記之:深入ViewStub的應(yīng)用
本篇文章是對Android中ViewStub的應(yīng)用進行了詳細的分析介紹,需要的朋友參考下2013-05-05