为什么要使用模版开发
在开发之中,我们总会遇到一些比较通用的模块,比如启动页,登陆功能,网络请求,MVP模式等等。有些功能甚至需要重复使用多次,我们通常的做法是把之前的模块拷贝过来,修改名字,再修改内容。如果使用了代码模板的话,会减少很多重复的工作。
我们经常使用的系统的模版的结构如下图所示。如果你想自定义一个Activity模版或其他类模版,你可以把这2个文件拷贝过去,修改一下就行了。
这种方式稍微复杂一些,因为新手大都对这几个文件不熟悉,不知道怎么修改。
模板文件后缀名都是以【.ftl】结尾。
globals.xml.ftl 全局变量文件 存放的是一些全局变量
recipe.xml.ftl 配置要引用的模板路径以及生成文件的路径
template.xml 模板的配置信息,以及要输入的参数.定义了模板的流程框架 基本结构
template_blank_activity.png 显示的缩略图(只是展示用)
-root Activity模板文件
globals.xml.ftl
定义一些全局的变量,可以看到其内部有标签,分别定义id,type,默认值。同理,我们可以通过id的值访问到该值。
recipe.xml.ftl
to="${escapeXmlAttribute(srcOut)}/${activityName}Activity.java" />
to="${escapeXmlAttribute(manifestOut)}/AndroidManifest.xml" />
to="${escapeXmlAttribute(resOut)}/values/strings.xml" />
instantiate : 把Activity模版或其他模版拷贝到我们的项目中,并且会更改我们自定义的参数。
merge : 合并的意思,比如将我们使用到的strings.xml合并到我们的项目的stirngs.xml中
copy :从root中copy文件到我们的目标目录,比如drawable、anim等文件夹。
open:在代码生成后,打开指定的文件,比如我们新建一个Activity后,默认就会将该Activity打开。
template.xml
format="5"
revision="5"
name="MVPActivity"
minApi="7"
minBuildApi="14"
description="mvp">
id="activityName"
name="Activity Nme"
type="string"
default="MVP"
help="" />
template_cover.png
中的name属性,对应新建Activity时显示的名字
对应New的类别为Activity
parameter,部分属性介绍:
id :唯一标识,最终通过该属性的值,获取用户输入值(文本框内容,是否选中)
name:界面上的类似label的提示语
type : 输入值类型
constraints:填写值的约束
suggest:建议值,比如填写ActivityName的时候,会给出一个布局文件的建议值。
default:默认值
help:底部显示的提升语
template.xml的最下面的部分引入了globals.xml.ftl和recipe.xml.ftl。
最后给大家分享一份非常系统和全面的Android进阶技术大纲及进阶资料,及面试题集
想学习更多Android知识,请加入Android技术开发企鹅交流 7520 16839
进群与大牛们一起讨论,还可获取Android高级架构资料、源码、笔记、视频
包括 高级UI、Gradle、RxJava、小程序、Hybrid、移动架构、React Native、性能优化等全面的Android高级实践技术讲解性能优化架构思维导图,和BATJ面试题及答案!
群里免费分享给有需要的朋友,希望能够帮助一些在这个行业发展迷茫的,或者想系统深入提升以及困于瓶颈的
朋友,在网上博客论坛等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我在这免费分享一些架构资料及给大家。希望在这些资料中都有你需要的内容。