Android Studio Activity模版开发

为什么要使用模版开发

在开发之中,我们总会遇到一些比较通用的模块,比如启动页,登陆功能,网络请求,MVP模式等等。有些功能甚至需要重复使用多次,我们通常的做法是把之前的模块拷贝过来,修改名字,再修改内容。如果使用了代码模板的话,会减少很多重复的工作。

我们经常使用的系统的模版的结构如下图所示。如果你想自定义一个Activity模版或其他类模版,你可以把这2个文件拷贝过去,修改一下就行了。


4134622-e915119169933db6.png

这种方式稍微复杂一些,因为新手大都对这几个文件不熟悉,不知道怎么修改。我推荐一种插件化的方式(强烈推荐)
https://www.jianshu.com/p/e3548f441440

模板文件后缀名都是以【.ftl】结尾。

  • globals.xml.ftl 全局变量文件 存放的是一些全局变量
  • recipe.xml.ftl 配置要引用的模板路径以及生成文件的路径
  • template.xml 模板的配置信息,以及要输入的参数.定义了模板的流程框架 基本结构
  • template_blank_activity.png 显示的缩略图(只是展示用)
    -root Activity模板文件

globals.xml.ftl

<?xml version="1.0"?>
<globals>
    <global id="resOut" value="${resDir}" />
    <global id="srcOut" value="${srcDir}/${slashedPackageName(packageName)}" />
    <global id="relativePackage" value="<#if relativePackage?has_content>${relativePackage}<#else>${packageName}</#if>" />
</globals>

定义一些全局的变量,可以看到其内部有<global>标签,分别定义id,type,默认值。同理,我们可以通过id的值访问到该值。

recipe.xml.ftl

<?xml version="1.0"?>
<recipe>

    <instantiate from="root/src/app_package/MVPActivity.java.ftl"
        to="${escapeXmlAttribute(srcOut)}/${activityName}Activity.java" />

    <merge from="root/AndroidManifest.xml.ftl"
           to="${escapeXmlAttribute(manifestOut)}/AndroidManifest.xml" />

    <merge from="root/${resIn}/values/strings.xml.ftl"
             to="${escapeXmlAttribute(resOut)}/values/strings.xml" />

</recipe>
  • instantiate : 把Activity模版或其他模版拷贝到我们的项目中,并且会更改我们自定义的参数。

  • merge : 合并的意思,比如将我们使用到的strings.xml合并到我们的项目的stirngs.xml中

  • copy :从root中copy文件到我们的目标目录,比如drawable、anim等文件夹。

  • open:在代码生成后,打开指定的文件,比如我们新建一个Activity后,默认就会将该Activity打开。

template.xml

<?xml version="1.0"?>
<template
    format="5"
    revision="5"
    name="MVPActivity"
    minApi="7"
    minBuildApi="14"
    description="mvp">

    <category value="Activity" />
    <formfactor value="Mobile" />

    <!-- input data -->
    

    <parameter
        id="activityName"
        name="Activity Nme"
        type="string"
        default="MVP"
        help="" />

    <!-- 128x128 thumbnails relative to com.puke.template.xml -->
    <thumbs>
        <!-- default thumbnail is required -->
        <thumb>template_cover.png</thumb>
    </thumbs>

    <globals file="globals.xml.ftl" />
    <execute file="recipe.xml.ftl" />

</template>
  • <template>中的name属性,对应新建Activity时显示的名字
  • <category>对应New的类别为Activity

parameter,部分属性介绍:

  • id :唯一标识,最终通过该属性的值,获取用户输入值(文本框内容,是否选中)
  • name:界面上的类似label的提示语
  • type : 输入值类型
  • constraints:填写值的约束
  • suggest:建议值,比如填写ActivityName的时候,会给出一个布局文件的建议值。
  • default:默认值
  • help:底部显示的提升语

template.xml的最下面的部分引入了globals.xml.ftl和recipe.xml.ftl。

我创建了启动页和MVP模式的2个模版,大家可以参考一下。后续有新的,会继续添加上去。
https://github.com/zhouxu88/CustomTemplate

往期回顾

Android Studio Project模板配置(一)

猜你喜欢

转载自blog.csdn.net/weixin_33974433/article/details/86946131