Android Studio 自定义模板

前言

在开发 Android 项目的过程中,难免会遇到重复编写同一段逻辑的代码的情况,就拿目前比较流行的 MVP 模式来举例好了,要实现一个页面的 MVP 开发,我们需要编写以下的类:

  • 一个 MVP 的契约接口,里面有一个 view 层接口 和 P 层的接口(或抽象类)
  • 对应的view 层接口的实现类
  • 对应的P 层接口的实现类
  • 对应的 model

如果当前页面需要使用 RecyclerView ,那么还得去写对应的 AdapterviewHolder

等你全部弄完后,估计你的大脑都快进入 CD 阶段了,效率一点都不搞高效

因此,我们很有必要去使用一些自动生成代码的技巧,比方说 Android Studio Template

Android Studio Template

当我们通过 Android Studio 创建一个新的 Actvity 时可以看到下面的图片:

在这里插入图片描述

只要点击下去,就能很轻松生成一个全新的 Actvity,这就是 Android Studio Template 的作用

Android Studio Template 依靠 FreeMarker 引擎,将事先定义好的模板文件生成我们所需的 class 文件、layout 文件等等,可以极大减少样板式代码的编写,帮助我们节省大量的时间

先去到 Android Studio\plugins\android\lib\templates 下面,这里就是模板的存放位置 ,可以看到这里其他默认的模板:

在这里插入图片描述

这里以相对简单典型的 EmptyActivity为例进行讲解

在这里插入图片描述

用编译器打开,可以看到下面的东西:

在这里插入图片描述

下面我们来一个一个来看,这里先将 kt(SimpleActivity.kt.ftl) 的模板忽略掉,先看 SimpleActivity.java.ftl 里面的内容:

package ${
   packageName};

........
........
........

public class ${
   activityClass} extends ${
   superClass} {
   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
........
        setContentView(R.layout.${
   layoutName});
........
........
    }
........
}

将全部的影响因素都去掉了,这里就很好懂了,这个就是 Activity 代码生成模板,想必这里时候都注意到了 ${activityClass} 等变量了,这些都是从外部获取值的标量,那么这个外部是哪里呢?

其实就是 template.xml

<?xml version="1.0"?>
<template
    format="5"
    revision="5"
    //模板的名字,不可重复(注释在开发模板时需删除)    
    name="Empty Activity"
    minApi="9"
    minBuildApi="14"
    //模板的提示语(注释在开发模板时需删除)    
    description="Creates a new empty activity">
    //category 是模板类型(注释在开发模板时需删除)   
    //不写的话,无法出现了上面图一右键菜单里面(注释在开发模板时需删除)    
    <category value="Activity" />
    <formfactor value="Mobile" />
   ...........
    <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="generateLayout"
        name="Generate Layout File"
        type="boolean"
        default="true"
        help="If true, a layout file will be generated" />

    <parameter
        id="layoutName"
        name="Layout Name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值