Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Template(模板) 編寫(二)

Android Template(模板) 編寫(二)

編輯:關於Android編程

上篇文章介紹的方法只能創建類模板,不能創建xml文件等資源文件以及配置文件等,這篇文章來介紹創建可以一次創建多個文件多種類型文件的方法。

我們在使用AndroidStudio創建Activity的時候一般java文件,xml文件,以及在androidmanifest.xml配置文件中配置已經完成。

上篇文章講到AndroidStudio的文件模板放在安裝目錄下/plugins/Android/lib/templates 文件夾下面。
安裝目錄
可以看到裡面那些正是AndroidStudio默認提供的Activity類型(我截圖裡面多了幾個,是我自己測試寫的)。<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KCjxwPs/Cw+bO0sPHt9bO9tfuvPK1pbXE0ru49sSjsOVFbXB0eUFjdGl2aXR5LEVtcHR5QWN0aXZpdHnOxLz+vNDPwsPmsPzAqKO6IDxicj4KPGltZyBzcmM9"/uploadfile/Collfiles/20160530/20160530092813401.png" alt="模板文件夾內容" title="\">

Android Studio 使用的是freeMaker模板引擎,所以文件夾下面的文件後綴名都是.ftl。

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

SimpleActivity.java.ftl Activity模板文件

globals.xml.ftl 定義了一些全局變量 以及將 common_globals.xml.ftl 文件中的全局變量引入



    
    
    
    
    
    <#include "../common/common_globals.xml.ftl" />

common_globals.xml.ftl


    <#assign theme=getApplicationTheme()!{ "name": "AppTheme", "isAppCompat": true }>
    <#assign themeName=theme.name!'AppTheme'>
    <#assign themeNameNoActionBar=theme.nameNoActionBar!'AppTheme.NoActionBar'>
    <#assign appCompat=theme.isAppCompat!false>
    <#assign appCompatActivity=appCompat && (buildApi gte 22)>

    
    
    
    
    
    
    
    

    
    
    
    
    
    

<#if !appCompat>
    
    
    
    
<#elseif appCompatActivity>
    
    
    
    
<#else>
    
    
    
    


    
    
    
    
    

recipe.xml.ftl 、recipe_manifest.xml.ftl、recipe_simple.xml.ftl 配置要引用的模板路徑以及生成文件的路徑



    <#include "../common/recipe_manifest.xml.ftl" />

<#if generateLayout>
    <#include "../common/recipe_simple.xml.ftl" />
    


    

    



//recipe_manifest.xml.ftl


    

    



//recipe_simple.xml.ftl


<#if appCompat && !(hasDependency('com.android.support:appcompat-v7'))>
    


    

<#if (isNewProject!false) && !(excludeMenu!false)>
    <#include "recipe_simple_menu.xml.ftl" />


    <#include "recipe_simple_dimens.xml" />


這裡<#if >是freeMaker的if判斷標簽,對freeMaker我也不太熟悉,大家感興趣可以去看一下freeMaker語法。

這句是根據root/src/app_package/SimpleActivity.java.ftlSimpleActivity.java.ftl模板文件生成escapeXmlAttribute(srcOut)目錄下對應${activityClass}.java文件,escapeXmlAttribute(srcOut)這個是指你選擇的目錄即你點擊右鍵時的目錄。

 

同樣這句的作用是生成後打開這個文件。

merge標簽代表是將AndroidManifest.xml.ftl模板文件中的內容添加到AndroidManifest.xml文件中,並不是覆蓋。

template.xml 模板的配置信息,以及要輸入的參數.定義了模板的流程框架 基本結構


下面配一張圖
這裡寫圖片描述
SimpleActivity.java.ftl Activity模板文件

package ${packageName};  

import ${superClassFqcn};
import android.os.Bundle;

public class ${activityClass} extends ${superClass} {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
<#if generateLayout>
        setContentView(R.layout.${layoutName});

    }
}

${activityClass} ${superClass} 其他文件中對變量的引用,都是前面定義的一些參數,一般主要出自兩個地方,一個是globals.xml 全局變量文件,第二個是template.xml 界面中定義變量。
這種根據模板生成更類似於一種文件拷貝,不會檢查語法。

上面是理論基礎。下面我們來實戰一下,順便解決一下上篇文章的問題如何生成多個文件,以及不同類型的文件。

實戰須知:
建議大家在修改之前,現將整個文件夾備份一下,免得改亂了。文件夾也不大。



    
    
       

**recipe.xml.ftl 配置要引用的模板路徑以及生成文件的路徑。
一次性生成多個文件,在於使用標簽,只要寫好引用模板文件和輸出文件路徑和文件名。**



    
    

    

    
    

    

    
    

    


    

    


    

    


    

    


    

    

template.xml 模板的配置信息,以及要輸入的參數.定義了模板的流程框架 基本結構


剩下的模板資源文件就不一一列舉貼代碼了 ,這些文件大家可以根據自己的需求去自己定義。

.剩余的資源文件

效果圖:
這裡寫圖片描述

代碼上傳到了github:
https://github.com/zhaodaizheng/AndroidTemplates

這個demo自動生成的文件,是根據我自己的框架生成的,大家本地生成後的文件肯定會出現錯誤,大家可以根據自己封裝的框架進行修改。

對FreeMarker不太了解 有錯誤的地方歡迎反饋。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved