Android Studio Template 依靠 FreeMarker 引擎,将事先定义好的模板文件生成我们所需的 class 文件、layout 文件等等,可以极大减少样板式代码的编写。
模板位置,Windows 的路径在 /plugins/android/lib/templates/,Mac 下是 Android Studio.app/Contents/plugins/android/lib/templates/,将自己写好的模板文件拷贝到此次即可在项目中使用,在file->new->activity中快速生成模板文件。 # 模板编写 主要有以下几个文件,变量名用${var}表示 ## Activity.java.ftl中写activity相关代码 ``` package ${packageName};
public class ${activityName} extends BaseActivity {
@Bind(R.id.public_tv_title_text)
TextView publicTvTitleText;
@Bind(R.id.public_tv_title_save)
TextView publicTvTitleSave;
@Override
public int getLayoutId() {
return R.layout.${layoutName};
}
@Override
public void init() {
ButterKnife.bind(this);
SystemBarTintUtil.INSTANCE.setSystenBarTint(mActivity, findView(R.id.${layoutName}_root), true);
}
@Override
public void initEvent() {
}
@Override
public void initData() {
publicTvTitleText.setText("${title}");
publicTvTitleSave.setText(" ");
publicTvTitleSave.setVisibility(View.GONE);
publicTvTitleSave.setTextColor(Color.parseColor("#FF333333"));
}
@Override
protected void onResume() {
super.onResume();
}
@OnClick({R.id.rl_public_iv_back, R.id.public_tv_title_save})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.rl_public_iv_back:
finish();
break;
case R.id.public_tv_title_save:
break;
}
} }
## xml
## manifest
<#import “../../common/shared_manifest_macros.ftl” as manifestMacros>
## template
1. name属性为模板名称,description属性为模板的描述。
1. category标签,定义了模板所属的分类,,分类名一样的模板会被归纳到同一目录下。
1. parameter 标签,定义了模板输入弹窗中的输入参数,每个 parameter 为一行
- id 属性为参数唯一标识,我们可以在代码中通过 id来使用该参数。
- name 属性为参数名称,显示在输入控件的前面或后面。
- type属性为参数类型,根据该属性和constraints属性的值综合比较后参数会被渲染成不同的输入形式,比如 string 类型会显示输入框,而 boolean类型会显示一个选择框。
- constraints属性为输入约束,常见的有class,代表类名;layout代表布局名;package 代表包路径; unique则是不能与现有的重复;nonemptye表示不能为空。
- suggest 和 default标签,前者是建议名称,后者是默认名称,前者优先级高于后者。
- help属性是参数输入提示,当该参数获取焦点后,对应的帮助信息会显示在对话框上。
1. globals标签指定了 global 文件,global 标签定义了一系列的全局参数,供后续模板文件使用。
1. execute标签,跟字面上的意思一样,执行 recipe.xml.ftl文件的内容,将模板文件生成具体的可用文件。
## recipe.xml
作用是定义输出规则
```
- <#include>标签那行表示包含了 recipe_manifest.xml.ftl 文件的内容,里面是