Android Studio的Activity自定義模板介紹
一、Android Studio的模板所在路徑
{Android Studio}/plugins/android/lib/templates/activities
- 自制模板若無錯誤,直接拷至此目錄下即可使用
二、最簡單的預設模板EmptyActivity介紹
0、EmptyActivity目錄結構
EmptyActivity |- template.xml //建立Activity時的屬性配置 |- globals.xml.ftl //定義一些全域性的設定 |- recipe.xml.ftl //拷貝程式碼或檔案的命令 |- template_blank_activity.png //效果圖 |- root |- src |- app_package |- SimpleActivity.java.ftl //被拷貝轉化的程式碼
1、template.xml 建立Activity時的屬性配置
配置介面 (檔案寫好後在使用時的介面)
全部內容
<?xml version="1.0"?> <template format="5" revision="5" name="Empty Activity" minApi="9" minBuildApi="14" description="Creates a new empty activity"> <category value="Activity" /> <formfactor value="Mobile" /> <parameter id="activityClass" name="Activity Name" type="string" constraints="class|unique|nonempty" suggest="${layoutToActivity(layoutName)}" default="MainActivity" help="The name of the activity class to create"/> <parameter id="generateLayout" name="Generate Layout File" type="boolean" default="true" help="If true, a layout file will be generated" /> <parameter id="layoutName" name="Layout Name" type="string" constraints="layout|unique|nonempty" suggest="${activityToLayout(activityClass)}" default="activity_main" visibility="generateLayout" help="The name of the layout to create for the activity" /> <parameter id="isLauncher" name="Launcher Activity" type="boolean" default="false" help="If true, this activity will have a CATEGORY_LAUNCHER intent filter, making it visible in the launcher" /> <parameter id="backwardsCompatibility" name="Backwards Compatibility (AppCompat)" type="boolean" default="true" help="If false, this activity base class will be Activity instead of AppCompatActivity" /> <parameter id="packageName" name="Package name" type="string" constraints="package" default="com.mycompany.myapp" /> <!-- 128x128 thumbnails relative to template.xml --> <thumbs> <!-- default thumbnail is required --> <thumb>template_blank_activity.png</thumb> </thumbs> <globals file="globals.xml.ftl" /> <execute file="recipe.xml.ftl" /> </template>
- < template /> 的 name 是AS建立Activity,選擇模板時顯示的名字;其他屬性可直觀看出,如最低可選擇該模板的工程API版本。
每個 < parameter /> 都對應於配置介面的一項屬性選擇,如activityClass(Activity的名字)、generateLayout(是否生成layout檔案)等等。
<!-- id 唯一標識 --> <!-- name label提示語 --> <!-- type 輸入值型別 --> <!-- constraints 填寫值的約束 --> <!-- suggest 建議值 --> <!-- default 預設值 --> <!-- help 提示語 -->
< thumbs /> 設定 效果圖
- < globals /> 設定 全域性設定檔案
- < execute /> 執行 命令檔案
2、globals.xml.ftl 用於定義一些全域性的設定
<?xml version="1.0"?>
<globals>
<global id="hasNoActionBar" type="boolean" value="false" />
<global id="parentActivityClass" value="" />
<global id="simpleLayoutName" value="${layoutName}" />
<global id="excludeMenu" type="boolean" value="true" />
<global id="generateActivityTitle" type="boolean" value="false" />
<#include "../common/common_globals.xml.ftl" />
</globals>
- include 是指將目標檔案中的程式碼也包含進來,如本例中包含進了通用全域性設定檔案
- ${layoutName} 是變數名,定義於“template.xml”中的 < parameter />。
3、recipe.xml.ftl 拷貝程式碼或檔案的命令
<?xml version="1.0"?>
<recipe>
<#include "../common/recipe_manifest.xml.ftl" />
<#if generateLayout>
<#include "../common/recipe_simple.xml.ftl" />
<open file="${escapeXmlAttribute(resOut)}/layout/${layoutName}.xml" />
</#if>
<instantiate from="root/src/app_package/SimpleActivity.java.ftl"
to="${escapeXmlAttribute(srcOut)}/${activityClass}.java" />
<open file="${escapeXmlAttribute(srcOut)}/${activityClass}.java" />
</recipe>
- instantiate : 將ftl轉化為java檔案,並放置到目標目錄。中間會通過一個步驟,將ftl中的變數都換成對應的值,那麼完整的流程是ftl->freemarker process -> java。
- open : 在程式碼生成後,開啟指定的檔案,比如我們新建一個Activity後,預設就會將該Activity開啟。
include 的程式碼中包含:
- copy : 將原始檔複製到目標目錄,比如我們的模板Activity需要使用一些圖示,那麼可能就需要使用copy標籤將這些圖示拷貝到我們的專案對應資料夾。
- merge : 合併源文 件和目標文 件,如將模板中的strings.xml合併到專案中的stirngs.xml。
4、SimpleActivity.java.ftl 將被轉化的Activity程式碼(.java複製,.ftl轉化)
package ${packageName};
import ${superClassFqcn};
import android.os.Bundle;
<#if includeCppSupport!false>
import android.widget.TextView;
</#if>
public class ${activityClass} extends ${superClass} {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
<#if generateLayout>
setContentView(R.layout.${layoutName});
</#if>
<#include "../../../../common/jni_code_usage.java.ftl">
}
<#include "../../../../common/jni_code_snippet.java.ftl">
}
相關推薦
Android Studio的Activity自定義模板介紹
一、Android Studio的模板所在路徑 {Android Studio}/plugins/android/lib/templates/activities 自制模板若無錯誤,直接拷至此目錄下即可使用 二、最簡單的預設模板EmptyActi
Android Studio 自定義模板
前言 在開發 Android 專案的過程中,難免會遇到重複編寫同一段邏輯的程式碼的情況,就拿目前比較流行的 MVP 模式來舉例好了,要實現一個頁面的 MVP 開發,我們需要編寫以下的類: 一個 MVP 的契約介面,裡面有一個 view 層介面 和 P 層的介面(或抽象類)
Android基礎控制元件——ProgressBar自定義的介紹、動畫效果實現、附加三個漂亮的進度條
ProgressBar自定義的介紹、動畫效果實現、附加三個漂亮的進度條 shape屬性介紹: corners 圓角 gradient 漸變 padding 內容離邊界距離 size 大小 solid 填充顏色 stroke 描邊 gradien
Android中attr自定義標籤介紹
第二行是自定義標籤。 格式如上,其中“xmlns:wen”冒號後面是標籤名,在下面使用時(只對當前檔案可用) <TextView wen:屬性名/> “com.iteye.googlers”是你的工程包名。 1. reference:參考某一資源ID。 (1)屬性
Android Studio自定義萬能註釋模板與建立類,方法註釋模板
程式碼的註釋是我們平時必須面對的問題,今天我們就來看看如何自定義屬於自己的註釋模板。提高我們的開發效率。 這裡,我們講解兩種自定義模板。 1.新建的類自動生成的註釋; 2.自定義註釋模板。 新建類自動生成的註釋 1.開啟相應的設定: Fi
Android Studio自定義配置註釋模板
我的簡書:簡書 在開發過程避免不了為程式碼添加註釋,為了註釋統一化,經常需要配置一些模板,所以這篇文章就記錄一下如何在Android Studio自定義註釋模板。 1、File –> Set
Android Studio 自定義設定註釋模板
一、.註釋模板說明 在專案中常用的註釋模板有三種:類註釋、方法註釋、成員變數註釋,一般為了書寫程式碼方便、快捷,需要設定類註釋模板和方法註釋模板,成員變數註釋模板可根據個人需求進行設定。 注:對於剛開始使用Android Studio 的新手,設定註釋模板是必須得,但
Android studio 自定義註釋模板
快捷鍵 Ctrl+/:當行註釋,反註釋再按一次即可 Ctrl+Shift+/:模組註釋,取消註釋再按一次即可,注意這邊的”/“不能用小鍵盤的 自定義註釋模板 File -> Setting -> Edito
Bootstrap Blazor 元件介紹 Table (二)自定義模板列功能介紹
Bootstrap Blazor 是一套企業級 UI 元件庫,適配移動端支援各種主流瀏覽器,已經在多個交付專案中使用。通過本套元件可以大大縮短開發週期,節約開發成本。目前已經開發、封裝了 70 多個元件,歡迎有興趣的同學試用。 Gitee 開源地址為:https://gitee.com/LongbowEnt
Android RatingBar 自定義樣式
android style Android RatingBar 自定義樣式1.先定義Style:<style name="RadingStyle" parent="@android:style/Widget.RatingBar"> <!-- 定義星星圖片 -->
前端學PHP之自定義模板引擎
php什麽是網站模板?準確地說,是指網站頁面模板,即每個頁面僅是一個板式,包括結構、樣式和頁面布局,是創建網頁內容的樣板,也可以理解為已有的網頁框架。可以將模板中原有的內容替換成從服務器端數據庫中動態內容,目的是可以保持頁面風格一致 PHP是一種HTML內嵌式的在服務器端執行的腳本語言,所以大部分PHP開發
Android Gradle 自定義任務執行命令行
andro blog tasks type mman 執行 adl col command tasks.create("name": "testAssemble", "type": Exec) { workingDir "../" commandLin
webpack 的htmlwebpackplugin使用自定義模板
支持 不同的 ef6 blog mon lang rul 自定義 mod htmlwebpackplugin這個插件可以用來生成靜態的html文件。默認內部是通過後臺來生成一個html的文件。當然也可以自己使用自己的文件來生成模板。可以支持.html文件。也可以使用其他
Android PullToRrefresh 自定義下拉刷新動畫 (listview、scrollview等)
appear ram nal ima cas 創建 protect tom inter PullToRefreshScrollView 自定義下拉刷新動畫,只需改一處。 以下部分轉載自http://blog.csdn.net/superjunjin/article/
django 自定義模板過濾器
django 自定義過濾器參考:http://www.cnblogs.com/qwj-sysu/p/4246605.html做的頁面,一個tr裏有兩個td, 1、3、5等奇數數據要放在第一個td, 2、4、6等偶數數據要放在第二個td, (如果已經沒有數據,td 內容要為空), 所以要根據取余數的結果來判斷;
Android studio 自定義打包apk名
roi fault targe test 包名 如果 nts time css Android Studio打包應用默認生成的apk名稱是:app-release.apk 、如果我們要讓生成的apk名跟我們版本包名有聯系的話,那我們就要自定義生成的apk名了 需要在bui
自定義模板語言整合
routes bing ret custom mod url mar == hand 這篇文章主要對比一下兩大框架Tornado和Django自定義模塊語言,以及對Tornado的自定義模塊語言進行一個分離整合 首先我們先看一下在Tornado裏,我怎麽實現的自定義
Android Gradle 自定義Task 詳解
png 發布 我們 批處理 使用總結 實用 shift fonts 博客 轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/76408024 本文出自【趙彥軍的博客】 一:Gradle 是什麽 Gradl
自定義模板方法(類似django中的simple_tag) | Tornado
escape print eth pos pla html 文件 ngs mbed # 自定義模板方法|相當於django中的simple_tag以及filter; # 1.uimethods.py def tag_one(self): print
zabbix的主動模式和被動模式、添加監控主機、添加自定義模板、處理圖形中的亂碼、自動發現
roo 清理 瀏覽器 間隔 原型 fin 監測 9.png sim 主動模式和被動模式 主動或者被動是相對客戶端來講的 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端 主動模式,客戶端會主動把監控數據匯報給服務端,服務