上图的效果就是android studio的模板,我们可以通过自定义模板方便我们日常的开发。
首先从android studio自带的模板说起
在android studio的安装目录下的\plugins\android\lib\templates\activities下保存了android studio系统自带的activity模板 截图如下:
通过模板可以快速的开发,但是由于我们UI大大的需求不会简单到使用系统自带的模板就可以完成的。
我们从最简单的Empty Activity开始分析,先看目录结构
root 文件夹 资源文件、模板文件
globals.xml.ftl 提供参数
recipe.xml.ftl 生成实际所需代码、资源文件等,使用参数替换其中的变量
template parameter标签,提供参数(图形化)
template_blank_activity 实际模板照片
平常我们自定义模板通常是复制已有的模板出来,然后在上面修改在
template_blank_activity.png
中的
name
属性,对应新建 Activity
时显示的名字
对应New的类别为Activity 上面parameter标签中部分属性如下:
<#include "../common/common_globals.xml.ftl" />
globals存储的是一些全局变量
<#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" />
#if>
常用标签及其含义:
ftl->freemarker process -> java
。freemaker简单语法:
//当价格为0时,就会打印出 "Pythons are free today!":
<#if animals.python.price != 0>
Pythons are not free today!
#if>
<#if >
<#elseif >
<#else >
#if >
<#if animals.python.price < animals.elephant.price>
Pythons are cheaper than elephants today.
<#elseif animals.elephant.price < animals.python.price>
Elephants are cheaper than pythons today.
<#else>
Elephants and pythons cost the same today.
#if>
使用 include
指令, 我们可以在模板中插入其他文件的内容。
一.template
template_blank_activity.png
效果:
上面需要注意的就是使用输入的时候suggest这个属性,这里提供几种内置方法
这里注意几个内置函数:
1.suggest="${layoutToActivity(layoutName)}"
如:layoutName=“activity_main” ——> MainActivity
如:layoutName=“main” ——> MainActivity
2.suggest="${activityToLayout(activityClass)}"
如:activityClass=“MainActivity” ——> activity_main
如:activityClass=“Main” ——> activity_main
3.suggest="${underscoreToCamelCase(classToResource(activityClass))}Adapter"//首字母是大写
如:activityClass=“MainActivity” ——> MainAdapter
如:activityClass=“Main” ——> MainAdapter
4.suggest=“item_${classToResource(activityClass)}” //首字母变成了小写
如:activityClass=“MainActivity” ——> item_main
如:activityClass=“Main” ——> item_main
其余两个文件参考Empty Activity
原作者:蔡百凯