Fork me on GitHub

Android Studio模板之文件

文件模板是指以一个文件为基础的模板,这种形式的模板比代码片段级别的模板要复杂一些,模板中设计到VTL(Velocity Template Language)语法。文件级别比代码级别能够存储更多的代码内容,而且能够通过VTL很大程度上提高模板的灵活度,让模板不再是一个不变的文本字符串。

我们开发的过程中可能会遇到有些类在不同的工程下都需要使用,单独抽成jar包可能又有点小题大做了,而且还得在下次使用的时候去依赖它,这个时候我们AS中的FileTemplate便派上用场了。

fileTemplate1

我们开发中可能经常去写一个继承BaseAdapter的子Adapter,而且里面有一大串无脑代码,于是我写了这个DataAdapter的模板。

Android Studio给我提供了创建模板的快捷方式,我们可以打开任意一个类,然后选择顶部的Tools—Save File As Template便可以快速创建一个当前类的模板文件

fileTemplate2

或者直接通过Preferences — Editor — File and Code Templates右边的加号创建

step1

然后IDE会自动打开这个界面

step2

大致说下这几个区域

  • 区域1:模板的名称,唯一标识一个文件模板
  • 区域2:模板的后缀名,填写当前属于哪种文件的模板
  • 区域3:模板编辑区
  • 区域4:一些可选配置
  • 区域5:官方对FileTemplate的简单描述,往下滑我们可以看到系统的预设变量(类似于上一章中的预设变量),这里的内容不是很多但营养价值很高,建议看一下

接下来我们编辑模板,把这段模板内容直接粘贴到编辑区,然后给模板命名为User即保存关闭该弹窗

1
2
3
4
5
6
7
8
9
10
11
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end

/**
* @author ${USER}
* @version ${DATE}
*/
public class ${NAME} {

public String[] name = {};

}

现在我们来引入刚写的模板,右键选择待添加模板的包 — New — User

step3

也可以New一个Java Class然后在弹窗中通过上下方向键或者下拉列表来选择找到创建的User模板

fileTemplate3

还可以直接在New下面选择

fileTemplate4

创建模板之后的引入方式有很多,我们可以使用自己比较喜欢的方式去引入。最终输入文件名点确定,代码直接生成出来。

上面说的是最基本的文件模板需求,当我们的文件需要多个参数时,例如User这个模板的name属性名可能是多边的,只有引入模板时才能确定下来,这时我们可以用自定义变量来表示,如下

1
2
3
4
5
6
7
8
9
10
11
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end

/**
* @author ${USER}
* @version ${DATE}
*/
public class ${NAME} {

public String[] ${fieldName} = {};

}

这个时候我们再引入模板时,IDE会扫描有没有自定义变量,如果有的并且没有被初始化赋值的话就在弹出的对话框中多一个可编辑的区域,如下图

step5

这便支持自定义参数的场景,到这一步为止,一般的文件模板需求我们都可以自己满足了。下面介绍一些相对深一点的使用方式,有兴趣的可以看看。

Android Studio的FileTemplate使用Velocity Template Language(简称VTL)进行逻辑判断和流程控制,有兴趣的可以直接看下Velocity的官方文档


------------- The end -------------