freemarker 模板

freemarker 模板

目录

  • 简介
  • 文件结构
  • 参考

简介

Android Studio 提供了不少模板,包括 Activity、Fragment、Service 等,缩短了开发者创建工程以及编写相似代码的时间,我们可以需求在 Android Studio 里编写相应的代码模板。

freemarker 模板_第1张图片

这些模板是使用 FreeMarker 编写的,它是一款模板引擎,支持使用 XML 来配置模板信息,生成输出文本(HTML网页、电子邮件、配置文件、源代码等)。

文件结构

  1. 在 Android Studio 里的路径
  • Windows: Android Studio 安装目录\plugins\android\lib\templates\activities
  • Mac Os: Android Studio 安装目录\Contents\plugins\android\lib\templates\activities
freemarker 模板_第2张图片
  • activities:Activity 模板
  • gradle:默认的 gradle-wrapper 文件
  • gradle-projects:可创建模板的类型
  • other:Fragment、View、Service 等模板
  1. Activity 模板下的文件

以 \activities\EmptyActivity 文件为例

freemarker 模板_第3张图片
  • template.xml:模板填写文件,定义创建模板时所需要的属性。


Android Studio 会解析 template.xml 的内容,然后通过 UI 界面显示给开发者。

freemarker 模板_第4张图片
  • globals.xml.ftl:全局变量


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

  • recipe.xml.ftl:模板文件操作逻辑

<#import "root://activities/common/kotlin_macros.ftl" as kt>

    <#include "../common/recipe_manifest.xml.ftl" />
    <@kt.addAllKotlinDependencies />

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


    
    


  • root:制作模板的实体

${数据} (引用内容:类名 activityClass 、包名 packageName)

<#if 变量> (判断)

(结束判断)

package ${packageName};

import ${superClassFqcn};
import android.os.Bundle;
import android.view.View;
<#if (includeCppSupport!false) && generateLayout>
import android.widget.TextView;


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

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
<#if generateLayout>
        setContentView(R.layout.${layoutName});
       <#include "../../../../common/jni_code_usage.java.ftl">
<#elseif includeCppSupport!false>

        // Example of a call to a native method
        android.util.Log.d("${activityClass}", stringFromJNI());

    }

    public void onClick(View view) {
        switch (view.getId()) {
            default:
                break;
        }
    }
    
<#include "../../../../common/jni_code_snippet.java.ftl">
}

参考

  • Android 组件化架构-第七章-7.7.1 模板基础
  • freemarker 官网

你可能感兴趣的:(freemarker 模板)