在Android Studio 中添加自定义活动模版(Live templates)

金文翔
• 阅读 125

在Android Studio 中添加自定义活动模版(Live templates)


什么是自定义活动模版?(注:很多文章翻译成实时模版,我认为活动模版更为贴切,下文都将用活动模版->Live templates)在Android Studio 中,有一个概念,就是只要需要输入关键字,就可以在任何需要的地方将任何文本内容块作为模板插入,这就是活动模版,通过使用活动模版,我们可以将常用的一些构造插入代码中。

Live templates 对我们有什么帮助?

活动模版非常方便,可以提高我们编写代码的速度。随着时间的推移,我们在项目中写着很多相同或者相似的模版代码,如:循环、条件控制、声明,甚至整个类模板(例如RecyclerView.AdapterRecyclerView.ViewHolder等等)。一些人在进行直播编码演示时广泛使用活动模板。它节省了大量时间,并且消除了许多可能的错误。

如何新建一个活动模版

要配置活动模版,我们需要打开Android Studio 中的Live Templates 设置页:Settings -> Editor -> Live Templates, 在实时模版页,我们可以看见所有可用的活动模版,可以编辑它们,也可以创建新的活动模版。

在Android Studio 中添加自定义活动模版(Live templates)

要定义新模版,在窗口的右侧,点击+ 按钮,这里有2个可选项:Live Template 和 Template group

在Android Studio 中添加自定义活动模版(Live templates)

继续创建一个新的分组,并将它命名为test,该分组将拥有用于编写测试的活动模板,因此该名称很应景。

下一步,我们选中新创建的分组test,然后点击右边的+按钮,就可以为这个分组中创建一个新的活动模版。

在Android Studio 中添加自定义活动模版(Live templates)

选择此选项后,在窗口底部,我们可以看到活动模板编辑器

在Android Studio 中添加自定义活动模版(Live templates)

这里,首先我们必须设置abbreviation(缩写), 缩写类似于关键字,它将触发模板在编辑器中的插入。我们还可以为它设置一个简洁贴切的描述。描述有何作用呢?例如,如果我们对不同的模板有类似的缩写,则描述对于稍后在代码中使用它们时,选择正确的模板非常有帮助。在本示例中,我们以test作为缩写,以JUnit test function作为描述。

接下来,我们将定义一个上下文,新模版将在该上下文中可用,在模版编辑器窗口底部,这里有一个黄色警告⚠️No applicable context,  意思就是没有可用的上下文

在Android Studio 中添加自定义活动模版(Live templates)

我们点击Define 按钮,来定义一个上下文

在Android Studio 中添加自定义活动模版(Live templates)

可以看到,如上图所示,我们选择了Kotlin Class 作为模版的上下文,也就意味着,这个模版在 Kotlin 类文件中可用。

接下来,让我们继续进行操作,为给定的缩写(也就是test)设置我们实际想要的模板。在编辑器的“Template text”输入框中应用以下代码:

@org.junit.jupiter.api.Testfun $EXPR$() { org.junit.jupiter.api.Assertions.assertEquals($EXPR1$, $EXPR2$)}

活动模板编辑器的右侧还有其他设置选项,但我们暂时将其忽略。最后,编辑器的外观如下:

在Android Studio 中添加自定义活动模版(Live templates)

接下来,我们要做的就是保存并完成。这里解释一下我们应用的实际模版代码:Test类和assertEquals()方法使用完全限定的名称

 org.junit.jupiter.api.Test org.junit.jupiter.api.Assertions.assertEquals

当我们在编辑器中使用此模板时,Android Studio将自动导入并补全代码。

让我们来看看它是什么样子,打开一个任意Kotlin class 文件(因为我们设置的上下文是 Kotlin class 文件),在类体中,输入相应的模版缩写:test

在Android Studio 中添加自定义活动模版(Live templates)

正如我们看到的,Android Studio  弹出了一个小窗口,我们可以选择其中的可用模版,因为我已经为JUnit4测试功能预先设置了一个活动模板,所以我可以看到两个可用的选项,也可以选择我想使用的选项。

只需按⏎(Enter)或⇥(Tab),Android Studio就会在编辑器中插入所选模板,并将光标置于模板的第一个$ EXPR $变量(在本例中为函数名)。

在Android Studio 中添加自定义活动模版(Live templates)

请务必注意,当光标在特定的$ EXPR $变量上键入内容时,键入的文本将以相同的名称出现在所有变量中。在我们的示例中,我们总共有三个变量,在每一个变量后面加了一个数字来区别:$ EXPR $$ EXPR1 $$ EXPR2 $。实际上,数字不用作下一个/上一个跳转的顺序,而是只是用来区分它们。

分享一些活动模版

最近,我发现了一个开源项目叫AndroidLiveTemplateshttps://github.com/pranaypate... ,它提供了一堆很酷很实用的活动模版,如果你有不错的活动模版,该库也欢迎提交PR。

以上就是文章的所有内容,希望它对你有用!
Android学习PDF+架构视频+面试文档+源码笔记

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
thinkphp 3.x下的任意文件包含(有条件)分析
漏洞原理实现自己的模版引擎不当,在模版渲染的情况下存在任意变量覆盖漏洞。。漏洞详情漏洞位置1ThinkPHP/Library/Think/View.class.php需要修改配置文件指定TMPL\_ENGINE\_TYPE为phpif('php'strtolower(C('TMPL_ENGINE
Stella981 Stella981
3年前
Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix
一,ZabbixWeb操作深入1.1ZabbixWeb下的主机和模版以及监控项的添加方式(1)创建一个模版我们所有的功能几乎都是在模版中定义的!1.png27.4kB(https://oscimg.oschina.net/oscnet/069729381dafd4bee3dc0dd41efc3aa4688.png)
Stella981 Stella981
3年前
HTML5 Boilerplate
一:HTML5Boilerplate是什么?解决了什么问题?对于第一次听说这个人,肯定都有这个疑问把!在网上看了看,发现很多人都认为这个是和Bootstrap一样的东西,这真是大错特错了。实际上,HTML5Boilerplate只是一个单纯的HTML模版。什么?HTML模版?干嘛用?这里不得不提所有前端开发都会遇到的问题,每次要重新弄一个
Stella981 Stella981
3年前
NutzBoot 开发时配置各种热更新及注意事项
静态文件配置下面这句必须是绝对路径,这样才能保证开发模式下修改静态文件后进行热更新jetty.staticPathLocalD:\\Work\\src\\main\\resources\\static\\beetl模版文件配置下面这句必须是绝对路径,这样才能保证开发模式下修改模版内容后模版
Stella981 Stella981
3年前
Android上的MVC模式
是否可以在Android版Java中实现模型视图控制器模式?还是已经通过活动实施了?还是有更好的方法来为Android实现MVC模式?1楼我认为最有用的简化说明在这里:http(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Ffr.sofbug
Wesley13 Wesley13
3年前
GO学习笔记
!(https://fzxiaomange.com/img/golang/template/cover.png)本文主题:基于内置的text/template实现Golang模版渲染,并将结果写入文件、屏幕、变量。小慢哥的原创文章,欢迎转载目录▪定义结构体▪定义模版文本▪模版渲染及输出方式▪
Easter79 Easter79
3年前
TarsGo 服务获取自定义模版(配置)值
!(https://oscimg.oschina.net/oscnet/297f6e2f0dd24ad4862c8937a0b0b2bf.gif)之前的文章中我们介绍了如何使用TarsGo创建HTTP服务(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fmp.weixin
Wesley13 Wesley13
3年前
C++ 模板基础
我们学习使用C,肯定都要了解模板这个概念。就我自己的理解,模板其实就是为复用而生,模板就是实现代码复用机制的一种工具,它可以实现类型参数化,即把类型定义为参数;进而实现了真正的代码可重用性。模版可以分为两类:一个是函数模版,另外一个是类模版。举个最简单的例子,当在编写好了一个进行int型交换的swap函数,而此后若又要进行double型交换,那就得重
Stella981 Stella981
3年前
Lightning Web Components html_templates(三)
LightningWebComponents强大之处在于模版系统,使用了虚拟dom进行智能高效的组件渲染。使用简单语法以声明方式将组件的模板绑定到组件的JavaScript类中的数据数据绑定我们可以使用{property}绑定组件模版属性到一个组件js类中的属性一个简单的例子组件class
Stella981 Stella981
3年前
Play 2.0 用户指南 - 模版引擎 -- 针对Scala开发者
一个基于Scala的类型安全的模版引擎   Play2.0带来了一个全新的真正强大的基于Scala的模版引擎。该引擎的设计灵感源于ASP.NETRazor.特别是:      简洁,富有表达力,流畅:最小化语法字符和击键要求,让你快速,流畅的编写代码。不像大多数模版引擎的语法,你无须明
程序员一鸣 程序员一鸣
2星期前
鸿蒙开发:自定义一个搜索模版
在日常的组件封装中,如果把所有的属性,都统一暴露至自定义组件一级的属性中,我们会发现,属性设置的是非常之多,再有小组件独立的情况下,也显得杂乱不堪,针对这种情况,其实我们可以把单独的小组件属性,独立的封装出来,使用回调函数的形式进行逐一设置即可。就比如我们这个自定义搜索模版,里面就分了很多个小组件属性。