`

[Android记录]自定义ADT模板

阅读更多

简介

ADT模板就是在Eclipse中使用向导新建Android工程或者Android组件的时候使用的模板。ADT模板的特点:

1.可以通过简单的可视化配置[后面称之为UI parameters]来生成Android代码和资源样本
2.集成到Eclipse ADT中
3.FreeMarker驱动

 

Android的默认模板

SDK下载完成之后,一般自带了一部分模板,模板的位置为:

$your_android_sdk_dir/tools/templates


模板的类型有: 
1.Android Application Templates 
这个模板是使用Eclipse的新建Android工程向导[包括Android project,lib project和test project]时使用的模板类型 
2.Android Activity Templates 
这个显然就是使用Eclipse的新建Android Activity向导时使用的模板类型 
3.Android Object Templates 
这个就是创建其他一些android组件向导时使用的一些模板[File -> New -> Other -> Android/Android Object 可以打开此类向导]

Activity示例

打开新建Android Activity向导,ADT插件首先就会列出一些可选模板让我们选择,如下:


我们再打开$your_android_sdk_dir/tools/templates/activities文件夹,会发现正好和向导的选择一一对应,不过要指出的是,模板文件夹的名字并不是模板的名字,这里只是恰好一样而已。
至于其他的Application Templates和Object Templates的基本情况都是一样的。

 

模板的工作流程

 

模板的具体构成

下面结合Activity模板来稍微说明下。开始之前,除了必要的Eclipse + ADT plugin + Android SDK,我们需要一个辅助工具——FreeMarker IDE 
FreeMarker IDE是个eclipse的插件,安装过程在FreeMarker的官网有介绍。 

官方提供的模板就是最好的资料,为了避免破坏原有的模板,我们新建一个模板工程: 
File -> New ->  Project -> General/Project: 
把新工程Xe_CustomActivity建立在了SDK的templates里面,然后将BlankActivity文件夹中的内容拷贝到新工程里面,这样就可以在eclipse里面直接使用了。 
 

我们重复一下上面的使用向导创建Activity的步骤,会发现有两个BlankActivity,其中一个是SDK自带的,一个是我们刚才创建的,这里再次表明文件夹的名字和模板名字是两码事。 
 

我们查看一下新工程的大致目录结构: 

project_name:
...root
......AndroidManifest.xml.ftl
......res
.........layout
............*.ftl/*.*
......src
.........app_package
............*.ftl/*.*
...template.xml
...recipe.xml.ftl
...globals.xml.ftl
...*.png


附带说明:.ftl表示FreeMarker模板语言

文件说明

 

template.xml

可以说是模板的模板,定义了模板的流 程框架 基本结构:

<?xml version="1.0"?><templateformat="3"revision="2"name="Blank Activity" <!-- 在向导中显示的模板名称 -->
    description="Creates a new blank activity, with an action bar and optional navigational elements such as tabs or horizontal swipe.">
    <dependencyname="android-support-v4"revision="8" /><categoryvalue="Activities" /><!-- 模板类型 --><parameterid="activityClass" <!-- 参数名,在ftl文件中可以用${activityClass}获取参数值 -->
        name="Activity Name" <!-- UI 界面输入框前的提示标签值 -->
        type="string" <!-- 参数值类型 -->
        constraints="class|unique|nonempty" <!-- 参数值约束条件,这里的约束是必须是类名,唯一,非空 -->
        suggest="${layoutToActivity(layoutName)}" <!-- 自动提示,比如输入layout的值可以自动生成activityClass -->
        default="MainActivity" <!--默认值 -->
        help="The name of the activity class to create" /> <!-- 向导对话框底部的帮助性文字 --><thumbs><thumb>template_blank_activity.png</thumb><thumbnavType="none">template_blank_activity.png</thumb><thumbnavType="tabs">template_blank_activity_tabs.png</thumb><thumbnavType="tabs_pager">template_blank_activity_tabs_pager.png</thumb><thumbnavType="pager_strip">template_blank_activity_pager.png</thumb><thumbnavType="dropdown">template_blank_activity_dropdown.png</thumb></thumbs><globalsfile="globals.xml.ftl" /><executefile="recipe.xml.ftl" /></template>

 


几个重要的节点:

category节点:表示模板的类型,可选的值包括三种:
1.Applications表示Android Application Templates
2.Activities表示Android Activities Templates
3.UI Component表示Android Object Templates中那些带有试图的UI组件模板,所以类似Service这种没有界面的组件模板中就没有这个节点了。

parameter节点:定义了图形配置界面的用户输入参数项。
参数类型由parameter节点的type属性定义,常见的类型有:
string——表现为输入框
boolean——表现为勾选框
enum——表现为下拉选择框

thumbs节点:定义了静态预览图。

对照Activity向导可以很容易的知道各个节点的意思:


<globals file="globals.xml.ftl" />就是将工程定义的全局变量包含进来。
<execute file="recipe.xml.ftl" />表示开始执行模板渲染。
因此,template.xml的结构和作用可以描述为:


globals.xml.ftl
这个文件的目的只有一个,就是提供全局变量[Global Values],简单示例:

<globalid="resOut"value="res" /><globalid="menuName"value="${classToResource(activityClass)}" />

其他文件中的引用方式就是${resOut}以及${menuName}等等 

recipe.xml.ftl 
菜单模板,名字挺形象的,定义流程执行的步骤,一个典型的recipe.xml.ftl文件:

<?xml version="1.0"?><recipe><mergefrom="AndroidManifest.xml.ftl" /><copyfrom="res/values-v14/styles_ics.xml"to="res/values-v14/styles.xml" /><instantiatefrom="res/menu/main.xml.ftl"to="res/menu/${menuName}.xml" /><openfile="res/layout/${layoutName}.xml" /></recipe>


可以看到recipe.xml.ftl使用了许多变量[后文称之为模板变量],那么这些变量来自那些地方呢?主要来自两个方面: 
1.UI Parameters 
2.Global Values 

模板变量数据流向

 

定制化自己的ADT模板,简单上手

1.我们将所有的模板帮助提示都改成中文,在template.xml文件中,主要是修改description的属性值:

<parameter
        id="activityClass"
        name="Activity名称"
        type="string"
        constraints="class|unique|nonempty"
        suggest="${layoutToActivity(layoutName)}"
        default="MainActivity"
        help="Activity的类名" />

2.一般我不会直接使用android默认的titlebar,而会自己定义一个TextView来定制title,因此我希望在向导中添加一个Page Title配置项,在template.xml添加下面的内容: 

<parameter
        id="pageTitle"
        name="My Page Title"
        type="string"
        constraints="nonempty"
        default="默认标题"
        suggest="${activityClass}_page_title"
        help="自定义页面的标题" />

在默认的activity布局文件[可以是root/res/layout/activity_simple.xml.ftl]中添加一个TextView 

<TextViewandroid:background="#ff5500"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="${pageTitle}" />

3.app中会引用其他的一些库,这些库通常也会带有很多activity布局文件,为了和自己的布局文件去分开,所以我通常在自己的布局文件前面添加一个前缀,可以这么修改: 
(1)定义一个前缀全局变量 

(2)分别在template.xml和recipe.xml.ftl修改相应的名称

globals.xml.ftl

<global id="xe_prefix" value="xe" />

recipe.xml.ftl: 

<instantiatefrom="res/menu/main.xml.ftl"to="${resOut}/menu/${xe_prefix}_${menuName}.xml" /><instantiatefrom="res/layout/activity_simple.xml.ftl"to="${resOut}/layout/${xe_prefix}_${layoutName}.xml" />


root/src/app_package/SimpleActivity.java.ftl: 

@Override
    protectedvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.${xe_prefix}_${layoutName});
        <#if parentActivityClass != "">
        // Show the Up button in the action bar.
        setupActionBar();
        </#if>
    }

 

附录

1,classToResource等方法定义在ADT插件中,具体源码: 
https://android.googlesource.com/platform/sdk/+/7dd444ea0125e50a5e88604afb6de43e80b7c270/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt 
2,FreeMarker参考 http://freemarker.org/index.html ,中文文档:http://jaist.dl.sourceforge.net/project/freemarker/chinese-manual/FreeMarker_Manual_zh_CN.pdf 
参考 《Custom Android Code Templates》

摘自:https://my.oschina.net/xesam/blog/143985

 

分享到:
评论

相关推荐

    eclipse Android ADT

    ADT还提供了丰富的代码模板,帮助快速生成常见的Android代码结构,如Activity、BroadcastReceiver等。 在开发过程中,ADT的图形布局编辑器允许开发者以可视化方式设计用户界面,预览在不同屏幕尺寸和方向下的显示...

    android-adt-templates

    【Android ADT 模板详解】 在Android应用开发中,快速构建基础的Activity和UI模型是提高开发效率的关键。"android-adt-templates"正是这样一个工具,它为开发者提供了丰富的预定义模板,使得创建常见的Android组件...

    Android ADT插件

    1. **项目创建与管理**:ADT插件提供了一个直观的用户界面,允许开发者快速创建新的Android项目,选择目标API级别,设置应用程序的基本属性,并自定义项目结构。 2. **布局编辑器**:集成的图形布局编辑器允许...

    android开发ADT

    开发者可以选择各种项目模板,如空白活动、自定义视图等,快速开始编码。 3. **图形布局编辑器**:ADT包含了一个可视化的XML布局编辑器,使得开发者可以拖放UI组件,实时预览在不同屏幕尺寸和分辨率下的界面效果。 ...

    Eclipse android ADT-23.0.6

    Eclipse Android ADT(Android Developer Tools)是专为Eclipse集成开发环境设计的一款核心插件,主要用于支持Android应用的开发工作。版本号23.0.6代表着该插件的一个特定更新,通常会包含错误修复、性能提升以及新...

    Android安卓程序员简历模板

    1. **Android ADT编程环境和调试流程**:Android Development Toolkit (ADT) 是一个集成开发环境,用于构建Android应用程序。它包含了 Eclipse IDE 的插件,支持创建、编辑、调试和构建 Android 应用。调试流程包括...

    ANDROID实习总结报告模板参考.pdf

    【Android实习总结报告模板参考】 本实习报告主要围绕在XXXXXXXX信息技术有限公司进行的Android实习经历展开,旨在探讨Android平台的系统架构、组件模型及其在实际项目中的应用。实习期间,我深入理解了Android开发...

    Andriod Sample 4.3 ADT(2)

    1. **基础应用模板**:这些模板应用展示了如何创建一个基本的Android项目,包括Activity的生命周期、Intent的使用以及布局管理。 2. **UI组件**:可能包括各种Android UI控件的示例,如Button、TextView、ImageView...

    eclipse安装ADT插件

    ### Eclipse安装ADT插件详解 ...安装ADT插件后,开发者可以获得一系列针对安卓开发的功能支持,如项目模板、代码补全、调试工具等,极大地提高了开发效率和体验。希望本文能帮助到正在学习安卓开发的朋友。

    Android代码-安卓ane模板

    - Adobe提供adt工具(Adobe AIR Developer Tool)来创建和管理ANE,但也可以使用第三方工具如ANEBuilder或自定义脚本来自动化打包过程。 5. **使用这个模板**: - 开发者可以下载这个“android-ane-master”...

    ADT-0.9.6 手机开发

    1. **项目创建与管理**:ADT允许用户快速创建新的Android项目,提供模板来简化初始化过程。开发者可以选择不同的项目类型,如应用项目、库项目或测试项目,并可以自定义项目属性,如目标API级别。 2. **图形布局...

    Android基础综合项目.zip

    Eclipse通过Android Developer Tools (ADT) 插件支持Android开发。ADT提供了许多功能,如图形化布局编辑器、AVD管理器(创建和管理模拟器)以及对Android SDK的集成。 三、创建Android项目步骤 1. 安装Eclipse和ADT...

    2022年android程序员简历.docx

    * 熟练 Androidadt 编程环境和调试流程,能独立开发项目 * 熟练 Android 的四大组件:activity、Services、ContentProvider、BroadcastReceiver * 熟练 Android UI 的五种常用布局:线性、表格、相对、绝对、帧布局 ...

    adt-2003.zip

    5. "web" - 这个目录可能包含了与Web开发相关的资源,尽管ADT主要针对Android应用开发,但Eclipse作为一个通用IDE,也支持Web项目的开发,所以这里可能包含了HTML、CSS、JavaScript等相关工具或模板。 总的来说,这...

    Android eclipse 自动补全的设置

    除了上述基本设置,Eclipse还允许你自定义代码模板。在"Java &gt; 代码样式 &gt; 代码模板"中,你可以创建自己的代码片段,如常用的构造函数、循环或异常处理。这些模板将在补全列表中显示,提高编码速度。 此外,`a.epf`...

    Android-AndroidStudio快速创建常用工具类的插件

    Android Studio插件则是在IDE内增加自定义功能的方式,可以扩展IDE的原有功能,例如代码生成、格式化、调试辅助等。Utils_plugin-master就是这样一个插件,它的目标是帮助开发者快速生成常见的工具类代码,减少手动...

    自己编写的Android记事本APP软件

    在Android平台上,开发一款记事本应用是一项基础且常见的任务,可以帮助用户记录日常生活中的点滴信息。这个名为"DateNote"的APP就是你自己使用Android Developer Tools(ADT)编写的成果,它展示了Android应用开发...

    Android--SDK

    4. **ADT(Android Developer Tools)**:虽然现在已被Android Studio取代,但早期的ADT插件为Eclipse IDE提供了对Android开发的支持。 5. **编译工具**:如Apache Ant和Gradle,它们用于构建和打包APK文件,Gradle...

    Google官方Android开发教程-入门篇-中文翻译

    - 在开始Android应用程序开发之前,需要构建开发环境,具体包括下载Android SDK,安装Eclipse的ADT插件(如果使用Eclipse IDE)以及下载最新的SDK工具和平台。 - 在创建Android项目时,需要填写一些基本信息,比如...

    Android Studio3.6.rar

    自2013年发布以来,它逐渐取代了Eclipse ADT,成为Android开发者首选的开发工具。本次我们关注的是Android Studio 3.6版本,这个版本不仅优化了许多功能,还引入了一些新的特性,旨在提升开发者的效率和体验。 首先...

Global site tag (gtag.js) - Google Analytics