上图的效果就是android studio的模板,我们可以通过自定义模板方便我们日常的开发。
============================================================
在android studio的安装目录下的\plugins\android\lib\templates\activities下保存了android studio系统自带的activity模板 截图如下:
通过模板可以快速的开发,但是由于我们UI大大的需求不会简单到使用系统自带的模板就可以完成的。
我们从最简单的Empty Activity开始分析,先看目录结构
![](https://www.icode9.com/i/ll/?i=20181127170907632.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2w1MDY5NDUwMjQ=,si
globals.xml.ftl 提供参数
recipe.xml.ftl 生成实际所需代码、资源文件等,使用参数替换其中的变量
template parameter标签,提供参数(图形化)
template_blank_activity 实际模板照片
平常我们自定义模板通常是复制已有的模板出来,然后在上面修改在
1.template.xml 属性详解
<?xml version="1.0"?>
<template
format=“5”
revision=“5”
name=“Empty Activity”
minApi=“9”
minBuildApi=“14”
description=“Creates a new empty activity”>
<parameter
id=“activityClass”
name=“Activity Name”
type=“string”
constraints=“class|unique|nonempty”
suggest="${layoutToActivity(layoutName)}"
default=“MainActivity”
help=“The name of the activity class to create” />
template_blank_activity.png
<?xml version="1.0"?>
<#include “…/common/common_globals.xml.ftl” />
globals存储的是一些全局变量
<?xml version="1.0"?>
<#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>
<instantiate from=“root/src/app_package/SimpleActivity.${ktOrJavaExt}.ftl”
to=" e s c a p e X m l A t t r i b u t e ( s r c O u t ) / {escapeXmlAttribute(srcOut)}/ escapeXmlAttribute(srcOut)/{activityClass}.${ktOrJavaExt}" />
常用标签及其含义:
-
copy :从root中copy文件到我们的目标目录,比如我们的模板Activity需要使用一些图标,那么可能就需要使用copy标签将这些图标拷贝到我们的项目对应文件夹。
-
merge : 合并的意思,比如将我们使用到的strings.xml合并到我们的项目的stirngs.xml中
-
instantiate : 和copy类似,但是可以看到上例试将ftl->java文件的,也就是说中间会通过一个步骤,将ftl中的变量都换成对应的值,那么完整的流程是
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
<?xml version="1.0"?><template
format=“5”
revision=“5”
name=“自定义列表的 Activity”
minApi=“9”
minBuildApi=“14”
description=“创建一个新的列表”>
<parameter
id=“activityClass”
name=“Activity Name”
type=“string”
constraints=“class|unique|nonempty”
suggest="${layoutToActivity(layoutName)}"
default=“MainActivity”
help=“The name of the activity class to create” />
<parameter
id=“isLauncher”
name=“Launcher Activity”
type=“boolean”
default=“false”
help=“If true, this activity will have a CATEGORY_LAUNCHER intent filter, making it visible in the launcher” />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。