android studio简单使用(A):自定义模版介绍

因为暂时还没有考虑好顺序,先用A表示


前言

自己也没有怎么接触过android studio的模版
只是参考 鸿洋 的博客,接触到了, 自己记录一下
具体参考:
https://github.com/WanAndroid/AndroidStudioTemplates

(后面
http://robusttechhouse.com/tutorial-how-to-create-custom-android-code-templates/
里面有说 用 freemarker ,最后生成java代码, freemarker记得之前的公司,Spring的页面有用到,感觉页面填充数据都差不多)


参考网站

鸿洋博客指向的github地址
https://github.com/WanAndroid/AndroidStudioTemplates
参考的是

  • http://blog.csdn.net/lmj623565791/article/details/51635533
  • http://www.i-programmer.info/professional-programmer/resources-and-tools/6845-android-adt-template-format-document.html
  • https://developer.android.com/studio/projects/templates.html
  • http://robusttechhouse.com/tutorial-how-to-create-custom-android-code-templates/

自己参考

先参考

  • http://robusttechhouse.com/tutorial-how-to-create-custom-android-code-templates/

简单说明

android studio简单使用(A):自定义模版介绍_第1张图片
Paste_Image.png
android studio简单使用(A):自定义模版介绍_第2张图片
Paste_Image.png

这里大体的意思是,
通过开始做的参数,去做 recipe的执行
执行是将【前面的参数】,【recipe模版】和【Activity模版】,通过FreeMarker生成对应的 java文件


android studio中模版的位置

在 AndroidStudioXXXPath\plugins\android\lib\templates\中, 有对应的代码
以Activity为例:
我们打开android studio后, 在 File -- New -- Activity 中,可以看见很多可以选的Activity, 会显示显示符合条件的Activity模版


Paste_Image.png

AndroidStudioXXXPath\plugins\android\lib\templates\activities 中,有

android studio简单使用(A):自定义模版介绍_第3张图片
Paste_Image.png

我们可以对比,基本一样的(文件夹中,有几个没有显示而已)


对应的文件

我们以 EmptyActivity 为例:
(因为自己猜测, 空的应该是最简单的)

android studio简单使用(A):自定义模版介绍_第4张图片
Paste_Image.png

我们可以看见,对应的结构
大体为:

  • root 文件夹
  • 2个ftl模版文件
  • 1个xml文件
  • 一张图片

我们用大图看一下

android studio简单使用(A):自定义模版介绍_第5张图片
Paste_Image.png

在把miniSdk, 新建 EmptyActivity , 可以看见对应的页面

android studio简单使用(A):自定义模版介绍_第6张图片
Paste_Image.png

(对应的图片,和文件夹中的图片是一样的)


EmptyActivity 文件概要
  • root 文件夹
  • 2个ftl模版文件
  • 1个xml文件
  • 一张图片

我们先看一下

template.xml




一半猜测,一半看文档吧
先自己猜测一下(感觉代码都是差不多的,很多时候好的结构,可以猜到大概)
这是一个标准的xml

最外面 template, 可以猜测到

  • name: 名字, Empty Activity,新建的时候,显示的内容
  • minApi:最低api的版本(我们可以发现,gradle对应的版本如果写得过低,对应的模版是灰色不能选择的)
  • minBuildApi:最低的编译版本(同上)
  • description:描述,应该是显示在对话框中显示的描述

其他的变量:
category:类型,这里是 Activity
thumbs:android,java,maven都会见过,对应的thumbnail,缩略图,这里指向当前文件夹的一个文件(我们可以发现,如果修改名字后,新建模版就不会显示图片了)
globals:globals.xml.ftl,主观感觉,应该是一些全局的变量或者文件
execute:recipe.xml.ftl,主观感觉,应该是执行相关的

其他parameter们:
parameter:自己感觉就是对应的变量,别的地方可以使用的
一共有的parameter(3个string类型, 2个boolean类型)

  • activityClass: string 【Activity Name】
  • generateLayout:boolean【Generate Layout File】
  • layoutName:string 【Layout Name】
  • isLauncher:boolean【Launcher Activity】
  • packageName:string 【Package name】
android studio简单使用(A):自定义模版介绍_第7张图片
Paste_Image.png

对应一下,上图
发现全部可以对应上, 并且默认值,可以里面的默认值是一样的


globals.xml.ftl



    
    
    
    
    
    <#include "../common/common_globals.xml.ftl" />

前面几个 global id,应该都是 参数map,存放对应的id,type和value
最后有一个include
android,或者html页面,都经常用到的关键字
我们找一下对应的位置: ../common/common_globals.xml.ftl
( 无论是linux,php,win,貌似都一样,/ 开头,表示绝对路径; 其他表示相对路径)
我们到父文件夹找到common文件夹
找到对应的文件

android studio简单使用(A):自定义模版介绍_第8张图片
Paste_Image.png

common_globals.xml.ftl


    <#assign theme=getApplicationTheme()!{ "name": "AppTheme", "isAppCompat": true }>
    <#assign themeName=theme.name!'AppTheme'>
    <#assign themeNameNoActionBar=theme.nameNoActionBar!'AppTheme.NoActionBar'>
    <#assign appCompat=theme.isAppCompat!false>
    <#assign appCompatActivity=appCompat && (buildApi gte 22)>

    
    
    
    
    
    
    
    

    
    
    
    
    
    

<#if !appCompat>
    
    
    
    
<#elseif appCompatActivity>
    
    
    
    
<#else>
    
    
    
    


    
    
    
    
    

我们可以发现更多的global参数,存放的map值


recipe.xml.ftl

recipe.xml.ftl



    <#include "../common/recipe_manifest.xml.ftl" />

<#if generateLayout>
    <#include "../common/recipe_simple.xml.ftl" />
    


    

    

我们发现被 recipe 包裹,

  • 有2个#include, 也就是对应 父文件夹下common文件夹的recipe_manifest.xml.ftl,recipe_simple.xml.ftl,对应的文件
    (具体就不跟了,应该也是添加对应的recipe相关的内容)

  • 第2个include前面,有一个 #if, 应该是判断, 后面这个字符串,如果大家观察前面文件仔细的话,在template.xml的parameter中有对应的值,默认为true

  • 后面大体应该是打开文件,创建文件等操作, 创建实例

    就是

应该就是打开 root下面唯一的SimpleActivity.java.ftl 模版文件,复制到对应template.xml的parameter为activityClass的值的文件中


简单总结

还是最上面的图


android studio简单使用(A):自定义模版介绍_第9张图片
Paste_Image.png
android studio简单使用(A):自定义模版介绍_第10张图片
Paste_Image.png

第一个图:
通过开始做的参数,去做 recipe的执行
也就是,在 template.xml 显示界面,并且获得对应参数的value,和globals.xml.ftl里面的value一起去做Recipe执行操作

第二个图:
执行是将【前面的参数】,【recipe模版】和【Activity模版】,通过FreeMarker生成对应的 java文件
这里图中 MyActivity.java.ftl 就是 上面例子中 SimpleActivity.java.ftl 文件

你可能感兴趣的:(android studio简单使用(A):自定义模版介绍)