Android Studio Activity模版開發

爲何要使用模版開發

在開發之中,咱們總會遇到一些比較通用的模塊,好比啓動頁,登錄功能,網絡請求,MVP模式等等。有些功能甚至須要重複使用屢次,咱們一般的作法是把以前的模塊拷貝過來,修更名字,再修改內容。若是使用了代碼模板的話,會減小不少重複的工做。java

咱們常常使用的系統的模版的結構以下圖所示。若是你想自定義一個Activity模版或其餘類模版,你能夠把這2個文件拷貝過去,修改一下就好了。面試

 

這種方式稍微複雜一些,由於新手大都對這幾個文件不熟悉,不知道怎麼修改。小程序

模板文件後綴名都是以【.ftl】結尾。性能優化

  • globals.xml.ftl 全局變量文件 存放的是一些全局變量
  • recipe.xml.ftl 配置要引用的模板路徑以及生成文件的路徑
  • template.xml 模板的配置信息,以及要輸入的參數.定義了模板的流程框架 基本結構
  • template_blank_activity.png 顯示的縮略圖(只是展現用)
    -root Activity模板文件

globals.xml.ftl

<?xml version="1.0"?>
<globals>
    <global id="resOut" value="${resDir}" />
    <global id="srcOut" value="${srcDir}/${slashedPackageName(packageName)}" />
    <global id="relativePackage" value="<#if relativePackage?has_content>${relativePackage}<#else>${packageName}</#if>" />
</globals>

定義一些全局的變量,能夠看到其內部有<global>標籤,分別定義id,type,默認值。同理,咱們能夠經過id的值訪問到該值。網絡

recipe.xml.ftl

<?xml version="1.0"?>
<recipe>

    <instantiate from="root/src/app_package/MVPActivity.java.ftl"
        to="${escapeXmlAttribute(srcOut)}/${activityName}Activity.java" />

    <merge from="root/AndroidManifest.xml.ftl"
           to="${escapeXmlAttribute(manifestOut)}/AndroidManifest.xml" />

    <merge from="root/${resIn}/values/strings.xml.ftl"
             to="${escapeXmlAttribute(resOut)}/values/strings.xml" />

</recipe>
  • instantiate : 把Activity模版或其餘模版拷貝到咱們的項目中,而且會更改咱們自定義的參數。架構

  • merge : 合併的意思,好比將咱們使用到的strings.xml合併到咱們的項目的stirngs.xml中app

  • copy :從root中copy文件到咱們的目標目錄,好比drawable、anim等文件夾。框架

  • open:在代碼生成後,打開指定的文件,好比咱們新建一個Activity後,默認就會將該Activity打開。佈局

template.xml

<?xml version="1.0"?>
<template
    format="5"
    revision="5"
    name="MVPActivity"
    minApi="7"
    minBuildApi="14"
    description="mvp">

    <category value="Activity" />
    <formfactor value="Mobile" />

    <!-- input data -->
    

    <parameter
        id="activityName"
        name="Activity Nme"
        type="string"
        default="MVP"
        help="" />

    <!-- 128x128 thumbnails relative to com.puke.template.xml -->
    <thumbs>
        <!-- default thumbnail is required -->
        <thumb>template_cover.png</thumb>
    </thumbs>

    <globals file="globals.xml.ftl" />
    <execute file="recipe.xml.ftl" />

</template>
  • <template>中的name屬性,對應新建Activity時顯示的名字
  • <category>對應New的類別爲Activity

parameter,部分屬性介紹:性能

  • id :惟一標識,最終經過該屬性的值,獲取用戶輸入值(文本框內容,是否選中)
  • name:界面上的相似label的提示語
  • type : 輸入值類型
  • constraints:填寫值的約束
  • suggest:建議值,好比填寫ActivityName的時候,會給出一個佈局文件的建議值。
  • default:默認值
  • help:底部顯示的提高語

template.xml的最下面的部分引入了globals.xml.ftl和recipe.xml.ftl。

最後給你們分享一份很是系統和全面的Android進階技術大綱及進階資料,及面試題集

想學習更多Android知識,請加入Android技術開發企鵝交流 7520 16839

進羣與大牛們一塊兒討論,還可獲取Android高級架構資料、源碼、筆記、視頻

包括 高級UI、Gradle、RxJava、小程序、Hybrid、移動架構、React Native、性能優化等全面的Android高級實踐技術講解性能優化架構思惟導圖,和BATJ面試題及答案!

羣裏免費分享給有須要的朋友,但願可以幫助一些在這個行業發展迷茫的,或者想系統深刻提高以及困於瓶頸的

朋友,在網上博客論壇等地方少花些時間找資料,把有限的時間,真正花在學習上,因此我在這免費分享一些架構資料及給你們。但願在這些資料中都有你須要的內容。

相關文章
相關標籤/搜索