Android Studio Activity模版开发

为何要使用模版开发

在开发之中,咱们总会遇到一些比较通用的模块,好比启动页,登录功能,网络请求,MVP模式等等。有些功能甚至须要重复使用屡次,咱们一般的作法是把以前的模块拷贝过来,修更名字,再修改内容。若是使用了代码模板的话,会减小不少重复的工做。java

咱们常常使用的系统的模版的结构以下图所示。若是你想自定义一个Activity模版或其余类模版,你能够把这2个文件拷贝过去,修改一下就好了。面试

 

这种方式稍微复杂一些,由于新手大都对这几个文件不熟悉,不知道怎么修改。小程序

模板文件后缀名都是以【.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中app

  • 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。

最后给你们分享一份很是系统和全面的Android进阶技术大纲及进阶资料,及面试题集

想学习更多Android知识,请加入Android技术开发企鹅交流 7520 16839

进群与大牛们一块儿讨论,还可获取Android高级架构资料、源码、笔记、视频

包括 高级UI、Gradle、RxJava、小程序、Hybrid、移动架构、React Native、性能优化等全面的Android高级实践技术讲解性能优化架构思惟导图,和BATJ面试题及答案!

群里免费分享给有须要的朋友,但愿可以帮助一些在这个行业发展迷茫的,或者想系统深刻提高以及困于瓶颈的

朋友,在网上博客论坛等地方少花些时间找资料,把有限的时间,真正花在学习上,因此我在这免费分享一些架构资料及给你们。但愿在这些资料中都有你须要的内容。

相关文章
相关标签/搜索