亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android Studio輕松構建自定義模板的步驟記錄

2019-10-21 21:37:48
字體:
來源:轉載
供稿:網友

前言

之前其實有從鴻洋的文章有了解過AS的模板開發,一直想做一些自己經常使用的模板,以減少重復代碼工作,但是發現太費勁了,所以一直擱置。然后昨天無意中發現了這個插件TemplateBuilder,然后學習了一下,基本掌握了這個插件的使用,以及快速構建自己的模板。下面來分享一下。

一、TempateBuilder插件安裝

環境:Android Studio 3.1.1

方式1:AS內安裝

AndroidStudio,自定義模板

方式2:本地安裝

先去GitHub開源地址上下載插件壓縮包,或者到JetBrains上的插件地址(要翻 墻哦)下載。

AndroidStudio,自定義模板

安裝完后記得要重啟AS才能生效?。?!

二、建立自定義模板

以創建TestActivity模板為例。

1. 創建模板所需文件

按照平時的Activity,及Layout文件位置來創建把。(其實也可以隨便找個位置創建以下的模板文件)
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

AndroidStudio,自定義模板

3. 使用快捷鍵Alt+T,調出生成窗口,并填寫相關信息,及Add添加模板所使用的相關變量(如${testName})定義

AndroidStudio,自定義模板

AndroidStudio,自定義模板

下面來說明一下該界面對應的內容

  • 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 添加該變量時的提示信息,選填

注意:不要使用中文,因為編碼問題所以使用中文會變成亂碼

4.點擊 Next 要進入更詳細的配置

recipe.xml.ftl配置

AndroidStudio,自定義模板
原內容

from是模板文件路徑,to是要生成的文件路徑,如果不修改,默認文件名,就是跟原來的模板文件名一樣。我們需要文件名也一同重新命名,所以要修改一下,調整為如下配置

<?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 配置

AndroidStudio,自定義模板
原內容

從 recipe.xml.ftl配置中,我們就已經發現,其實AndroidManifest.xml的生成,是使用merge的方式,也就是跟Git的合并一樣,而這里的模板顯然已經不適用,所以需要對應調整為當前新的模板類型。

<?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,是控制創建時候的ui面板配置的,像在上一步中填寫的,名稱,默認值,類型等最終都是生成在這個文件中,當某項配置出錯時,可以根據需要做調整,不用每次都Alt+T新建模板。

build.gradle.ftl,是添加依賴使用的,我們沒有用到,所以不需要配置。

globals.xml.ftl,是全局一些配置,比如resOut是指定資源輸出文件夾。默認就ok了。

5. 點擊ok,生成成功,會在底部有提示,重啟AS后才生效。

AndroidStudio,自定義模板

三、使用

跟平常的新建EmptyActivity一樣操作,我們選擇我們剛剛創建的模板。

AndroidStudio,自定義模板

AndroidStudio,自定義模板

AndroidStudio,自定義模板

四、舉一反三

通過上面步驟,已經成功創建了一個快速測試的Activity模板。

最終模板生成的文件所在的位置是Alt+T時候配置的路徑,C:/Android/Studio/plugins/android/lib/templates,在這里也可以看到AS內置的模板,比如在C:/Android/Studio/plugins/android/lib/templates/activities/EmptyActivity里面的EmptyActivity模板。

同時可以參考內置模板的,template.xml、recipe.xml.ftl、globals.xml.ftl,及root/src下的模板文件,來找到自己需要的配置,比如創建文件之后,打開我們Activity.java文件。在recipe.xml.ftl文件中,加入命令
<open file="${escapeXmlAttribute(srcOut)}/${testName}Activity.java" />

還有其他的,如替換縮略圖之類。

最后

介紹這個控件的文章非常少,我也只找到一篇。作者原介紹,和那一篇文章,都有點零散把,有些地方也不是很清楚,最后經過自己的實踐,重新認識了如何自定義模板。最后還是非常感謝該插件作者。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
最近的2019中文字幕免费一页| 91国产一区在线| 日本午夜精品理论片a级appf发布| 久久中文久久字幕| 亚洲新中文字幕| 亚洲欧美三级在线| 国产精品一区二区3区| 国产精品白嫩初高中害羞小美女| 精品亚洲aⅴ在线观看| 久久久久久久影院| 欧美有码在线视频| 日韩av电影在线免费播放| 色婷婷av一区二区三区在线观看| 成人黄色av免费在线观看| 欧美成人自拍视频| 欧美一区第一页| 欧美日本在线视频中文字字幕| 久久精品视频在线观看| 国产美女久久精品| 26uuu亚洲伊人春色| 欧美一区二粉嫩精品国产一线天| 26uuu另类亚洲欧美日本一| 亚洲国产欧美精品| 欧美视频二区36p| 欧美日韩国产精品专区| 性欧美在线看片a免费观看| 国产精品亚洲自拍| 中文字幕亚洲国产| 北条麻妃久久精品| 久久久免费精品| 欧美丝袜美女中出在线| 91中文字幕在线观看| 久久久精品国产亚洲| 欧美大码xxxx| 午夜剧场成人观在线视频免费观看| 亚洲欧美日韩一区二区三区在线| 日韩在线视频观看正片免费网站| 国产亚洲激情在线| 欧美在线视频免费播放| 久久久国产精品视频| 国产精品日日做人人爱| 亚洲视频视频在线| 国产成人免费av| 久热爱精品视频线路一| 国产成人亚洲综合91精品| 91精品视频播放| 亚洲综合中文字幕在线| 少妇高潮久久77777| 一色桃子一区二区| 精品丝袜一区二区三区| 2025国产精品视频| 日韩电影中文字幕在线观看| 一个人www欧美| 91精品视频观看| 国产91色在线|免| 国产91露脸中文字幕在线| 欧美美最猛性xxxxxx| 中日韩美女免费视频网站在线观看| 欧美精品videosex极品1| 欧美日韩国产一区二区| 久久久久久久久久久av| 欧美激情综合色综合啪啪五月| 日韩中文在线观看| www.xxxx精品| 国产精品免费久久久久久| 国产不卡视频在线| 91在线国产电影| 国产精品久久久久久久久久东京| 成人伊人精品色xxxx视频| 97视频在线观看网址| 精品欧美国产一区二区三区| 国产精品专区h在线观看| 国产一区二区三区欧美| 亚洲摸下面视频| 亚洲国产精品网站| 国产精品对白刺激| 久久精品影视伊人网| 97精品国产91久久久久久| 欧美一级高清免费播放| 911国产网站尤物在线观看| 亚洲精品网站在线播放gif| 国产不卡av在线| 韩国一区二区电影| 色狠狠久久aa北条麻妃| 精品国模在线视频| 亚洲国产天堂久久综合网| 国产日产欧美a一级在线| 欧美激情在线狂野欧美精品| 欧美与欧洲交xxxx免费观看| 国产免费亚洲高清| 亚洲国产日韩欧美综合久久| 亚洲欧洲自拍偷拍| 日韩中文在线中文网三级| 欧美精品videos另类日本| 亚洲国产成人91精品| 国内免费精品永久在线视频| 日韩一二三在线视频播| 久久欧美在线电影| 国产精品第七十二页| 久久精品免费电影| 97视频在线观看播放| 欧美老女人在线视频| 日韩欧美中文字幕在线观看| 人九九综合九九宗合| 日韩高清免费在线| 欧美另类极品videosbestfree| 久久精品国产综合| 成人xvideos免费视频| 久久精品视频免费播放| 91亚洲精品视频| 欧美亚洲激情在线| 国产中文日韩欧美| 日韩av不卡电影| 另类天堂视频在线观看| 日本伊人精品一区二区三区介绍| 亚洲成年网站在线观看| 亚洲在线一区二区| 人九九综合九九宗合| 欧美成人免费播放| 在线播放国产一区二区三区| 精品成人69xx.xyz| 欧美亚洲伦理www| 欧美成人亚洲成人日韩成人| 91久久精品美女| 欧美一区二区三区艳史| www.美女亚洲精品| 日韩电影免费观看在线观看| 亚洲第一福利在线观看| 国产精品99蜜臀久久不卡二区| 欧美视频在线免费看| 欧美激情欧美狂野欧美精品| 国产精品美女免费| 国产日韩精品在线| 久久成人这里只有精品| 亚洲最大激情中文字幕| 欧美日韩xxxxx| 亚洲第一在线视频| 国产成人精品久久二区二区91| 国产日本欧美一区| 日韩免费黄色av| 一区二区成人av| 孩xxxx性bbbb欧美| 国产精品天天狠天天看| 精品日本高清在线播放| 欧美电影免费播放| 欧美日韩性视频在线| 欧美性色xo影院| 欧美激情亚洲国产| 国产又爽又黄的激情精品视频| 欧美激情一级欧美精品| 欧美床上激情在线观看| 国产98色在线| 欧洲日本亚洲国产区| 国产欧美日韩精品在线观看| 国产视频亚洲视频| 亚洲人永久免费| 欧美激情视频在线| 欧美巨大黑人极品精男| 在线电影av不卡网址| 日韩中文娱乐网| 欧美日韩一区二区在线| 亚洲精品国产精品自产a区红杏吧| 国内偷自视频区视频综合| 日韩电视剧免费观看网站|