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

4,815 阅读4分钟

原作者:Jovche Mitrejchevski 地址:mrw.so/5bWdIl 译者:依然范特稀西

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

Live templates 对我们有什么帮助?

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

如何新建一个活动模版

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

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

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

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

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

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

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

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

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

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

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

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

image.png

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

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

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

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

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

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

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

分享一些活动模版

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

以上就是文章的所有内容,希望它对你有用!

如果你喜欢我的文章,就关注下我的公众号 Android技术杂货铺 、 简书 或者Github! 微信公众号:Android技术杂货铺

简书:www.jianshu.com/u/35167a70a…

GitHub:github.com/pinguo-zhou…

公众号.png