APP开发实战149-Android Studio模板的定制使用

时间:2022-07-04 04:18:40

模板的定制使用

在用Android Studio的向导新建项目时,在如下界面显示许多AndroidStudio内置的Activity模板:

或在工程中选择新建Activity时,也可以选择内置的Activity模板,界面如下:

这样可以大大提高开发效率。

这些模板放在Android Studio安装路径的如下文件夹中:plugins\android\lib\templates\activities,用户也可以自己定制模板。

在各APP中基本都有登录功能,现参考Android Studio中提供的LoginActivity模板,定制了一个登录功能用的Activity模板,名称为rwLoginActivity,界面如下:

首先编写rwLoginActivity.java代码和activity_rw_login.xml文件实现此Activity,然后在此基础上实现模板。

参考Andr oid Studio提供的模板,要定制一个模板,涉及到以下文件:

 

template_rw_login_activity.png—对应在Android Studio用向导创建Activity里看到的那个Activity界面示意图

 

template.xml—定义属性参数,内容如下:

<?xmlversion="1.0"?>
<template
    format="5"
    revision="1"
    name="RuWang LoginActivity"
    description="Creates a new loginactivity, allowing users to enter a phone number and password to log in to orregister with your application."
    requireAppTheme="true"
   

    //此Activity支持的最小API级别

minApi="17"
    minBuildApi="17">

    <categoryvalue="Activity" />
    <formfactorvalue="Mobile" />
   

//以下parameter参数和相关属性会在创建Activity时,ConfigureAcitvity界面用到,需要用户输入一些参数值,且向用户显示一些提示信息,default和help的内容支持中英文

<parameter
        id="activityClass"
        name="Activity Name"
        type="string"
       constraints="class|unique|nonempty"
       default="rwLoginActivity"
        help="The name of theactivity class to create" />

    <parameter
        id="layoutName"
        name="Layout Name"
        type="string"
       constraints="layout|unique|nonempty"
       suggest="${activityToLayout(activityClass)}"
       default="activity_rw_login"
        help="The name of the layoutto create for the activity" />

    <parameter
        id="activityTitle"
        name="Title"
        type="string"
        constraints="nonempty"
        default="登录"
        help="The name of theactivity." />
   
    <parameter
        id="passwordLength"
        name="Password Length"
        type="string"
        constraints="nonempty"
        default="6"
        help="设置密码长度"/>   
       
    <parameter
       id="parentActivityClass"
        name="HierarchicalParent"
        type="string"
        constraints="activity|exists|empty"
        default=""
        help="The hierarchicalparent activity, used to provide a default implementation for the 'Up'button" />   

    <parameter
        id="packageName"
        name="Package name"
        type="string"
        constraints="package"
       default="com.mycompany.myapp" />

    <thumbs>
       <thumb>template_rw_login_activity.png</thumb>
    </thumbs>

    <globalsfile="globals.xml.ftl" />
    <executefile="recipe.xml.ftl" />

</template>

 

globals.xml.ftl和recipe.xml.ftl的后缀是ftl,表示这两个文件使用的是FTL(FreeMarkerTemplate Language)语言,这是一种简单的模板编写语言。

globals.xml.ftl—定义属性参数,内容如下:

<?xmlversion="1.0"?>
<globals>

//定义此Activity界面是否有ActionBar,value为true,表示不需要ActionBar
    <globalid="hasNoActionBar" type="boolean" value="true"/>

 

//定义此Activity是否具有"android.intent.action.MAIN"

和"android.intent.category.LAUNCHER"两个属性
    <global id="isLauncher"type="boolean" value="${isNewProject?string}" />

 

//以下两项不用修改,保留原样
    <globalid="GenericStringArgument" type="string"value="<#if buildApi lt 19>String</#if>" />
    <globals file="../common/common_globals.xml.ftl"/>
</globals>

其中lt是FTL语言关键字,相当于比较运算符“小于”,其它几个类似功能的关键字:

gt:比较运算符"大于"

gte:比较运算符"大于或等于"

lte:比较运算符"小于或等于"

 

recipe.xml.ftl—对代码文件和资源文件的处理

AndroidStudio提供的LoginActivity模板界面没有图片,rwLoginActivity模板界面有图片,需要在LoginActivity模板的recipe.xml.ftl文件中增加一个copy指令,复制模板资源图片到工程中的资源目录下:        
    <copyfrom="root/res/drawable"
           to="${escapeXmlAttribute(resOut)}/drawable" /> 

其余部分不需修改。

 

在root文件夹里包含此Activity相关的代码、资源文件和AndroidManifest文件:

AndroidStudio提供的LoginActivity模板界面有ActionBar,rwLoginActivity模板界面没有ActionBar,需要把LoginActivity模板的AndroidManifest.xml.ftl文件里的主题设置代码改成自己需要的主题名称:

<#ifhasNoActionBar>
android:theme="@style/Theme.AppCompat.Light.NoActionBar"

其余部分不需修改。

LoginActivity.java.ftl可以在之前写好的rwLoginActivity.java文件基础上做修改,导入包名的代码改成:

package${packageName};

 

类名和父类名改成:

publicclass ${activityClass} extends ${superClass}

 

密码长度参数的赋值语句改成:

privateint mPasswordLength = ${passwordLength};

其余部分复用rwLoginActivity.java的代码。

 

activity_login.xml.ftl也可以在之前写好的activity_rw_login.xml文件基础上做修改,里面涉及类名的地方改成:

tools:context="${relativePackage}.${activityClass}"

其余部分复用activity_rw_login.xml的代码。

完成开发后,把rwLoginActivity模板文件夹放在Android Studio安装路径的如下文件夹中:plugins\android\lib\templates\activities,关闭并重启Android Studio,就可以使用rwLoginActivity模板了。

创建rwLoginActivity的界面如下: