俗话说。不想偷懒的程序猿不是好程序猿。那么今天就教大家偷懒下!

先举个样例。我们在 Android 开发中输入 Toast ,然后会有例如以下例如以下的高速操作:

是不是非常方便?

有同学问,这不就是自己主动补全么?错了,乍一看是自己主动补全。事实上不然。自己主动补全是对一个方法或类名的补全,比方你输入 find 然后就会有 findViewById 方法提示你,你能够高速定位。可是我们实际开发中一般还须要对它强制转型,然后加上 R.id.xx 来声明它的 id。可是你能够试着输入 fbc ,然后按 tab 或者 enter 键。你会发现比自己主动补全还要更方便。

这个就叫做 Live Template 。假设真要翻译姑且就叫做实时模板吧,在 AS 中有两种模板。一种就是你在新建一个 Activity 的时候能够选择 Empty Activity、FullScreen Activity 之类的,这个通常是对你整个文件而言的。另一种就是本篇要介绍的 Live Template 。这个会在一些经常使用到的代码片段会非常实用。

打开 设置 -> Editor -> Live Templates ,能够看到默认已经有非常多 Live Templates 了,能够看下我的截图 Android 分类下有例如以下这些模板:

你都能够输入那些缩写来高速启用这些模板,比方定义一个常量。高速设置 View 为 gone 。高速启动一个 Activity 等。你都能够直接输入 constgonestarter 来高速操作。是不是认为非常酷炫!

那详细是怎样实现的呢?我们最好还是点击这些模板列表的 starter 。有例如以下代码:

public static void start(Context context) {
Intent starter = new Intent(context, $ACTIVITY$.class);
starter.putExtra($CURSOR$);
context.startActivity(starter);
}

当中 ACTIVITY 代表当前所在的类名,CURSOR 代表当前鼠标的定位位置,同理 newInstance 能够帮你在 Fragment 中高速声明一个新建 Fragment 的方法,它的代码例如以下:

public static $fragment$ newInstance($args$) {
$nullChecks$
Bundle args = new Bundle();
$addArgs$
$fragment$ fragment = new $fragment$();
fragment.setArguments(args);
return fragment;
}

当中 $$ 代表是一个变量,中间包裹着这个变量的名字,你能够对这个变量声明类型。这个后面再说。

是不是非常easy理解呢?假设理解了那么就能够来依据自己的使用习惯来定义自己的 Live Templates 了。

比方我们在开发中要经常写单例模式吧?每次都要写这么一大段是不是非常烦?那么今天就教大家自己定义一个单例模式的模板。以后轻松搞定单例。

设置 -> Editor -> Live Templates ,点击右上角的 + 号,选择 Template Group ,由于我习惯自己定义的单独分组先,这样好管理,比方新建一个分组叫做 stormzhang ,然后就会看到有一个 stormzhang 的分组显示在了列表里,这时候鼠标选中该分组,然后再点击右上角的 + 号,点击 Live Template ,然后例如以下图填写缩写与描写叙述,紧接着把例如以下代码复制到以下的输入框里(PS:单例模式的写法有非常多种,这里就任意以当中一种为例)

private static $CLASS$ instance = null;

private $CLASS$(){
} public static $CLASS$ getInstance() {
synchronized ($CLASS$.class) {
if (instance == null) {
instance = new $CLASS$();
}
} return instance;
}

注意这里,假设你这段代码是一些固定的代码。那么至此就结束了,可是这段代码里是动态的,里面有一些变量,由于每一个类的类名假设都须要自己手动更改就太麻烦了,所以有个变量 CLASS ,所以须要点击以下的 Define ,先要定义变量所属的语言范围。点开之后能够看到这里支持 HTML、XML、JSON、Java、C++ 等。非常明显,我们这里须要支持 Java ,选择选中 Java :

紧接着,我们须要给变量 CLASS 定义类型。这里的 CLASS 名字任意取的,为了可读性而已。你高兴能够取名 abc ,真正给这个变量定义类型的是点击 Edit variables button,来对该变量进行编辑,我们选择 className() 选项,能够看到还有其它选项,可是看名字大家大概就猜到什么含义了,这里就不一一解释了。

点击 ok 保存。至此我们定义的一个单例的 Live Template 就完毕了。你能够任意打开一个类文件,然后输入 singletontab 或者 enter 键就能够看到奇妙的一幕出现了,是不是非常帅?

看完这篇文章想想自己还有哪些经常使用到的代码片段,赶紧把它定义成一个 Live Template 吧,你会发现你又能够变懒了!

本文原创公布于微信公众号 AndroidDeveloper「googdev」。转载请务必注明出处!

让你变懒的 Android Studio Live Templates的更多相关文章

  1. Android Studio 提高开发效率的插件

    好久没有更新博客了,最近搞个listview搞得半死不活的,心累~~ 今天带来的是Android Studio插件的整理,全是我已经安装使用的,写这篇博文的目的也是因为我怕我自己给忘记怎么用(尴尬) ...

  2. android studio 项目生成的apk变小的原因

    问题:感觉直接在apk文件夹下面拷出来的apk不能安装使用,而且apk比较小,可能就是这个问题引起的 Android Studio版本升级到2.3后,增加了instant run功能,对项目的buil ...

  3. 使用Android studio过程中发现的几个解决R变红的办法

    刚开始使用Android studio的时候,好几次碰见新建了一个xml文件,或者new了一个activity之后,Android studio莫名其妙的报错了,而显示红色的地方就是常用的(R.id. ...

  4. Android Studio在代码重构中的妙用

    代码重构几乎是每个程序员在软件开发中必须要不断去做的事情,以此来不断提高代码的质量.Android Stido(以下简称AS)以其强大的功能,成为当下Android开发工程师最受欢迎的开发工具,也是A ...

  5. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  6. Android Studio —— 重装 HAXM

    Android Studio -- 重装 HAXM 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. Android SDK 自带模拟器一直以慢.卡 ...

  7. android studio你可能忽视的细节——启动白屏?drawable和mipmap出现的意义?这里都有!!!

    android studio用了很久了,也不知道各位小伙伴有没有还在用eclipse的,如果还有,楼主真心推荐转到android studio来吧,毕竟亲儿子,你会知道除了启动速度稍微慢些,你找不到一 ...

  8. Android Studio快捷键

      一.android studio 默认快捷键 刚开始接触一款开发软件,想必很想了解它的快捷方式,这会对你的编程起到很好的帮助,提高工作效率,接下来给你介绍下Android Studio一些常用的快 ...

  9. ubuntu 14.10 lts 64-bits环境下使用Android Studio

    距离google发布android studio 1.0正式版已经两个月左右了.由于一直习惯使用eclipse+ADT的模式,而且曾在windows下试用一次Android Studio预览版,感觉卡 ...

随机推荐

  1. 在浏览器里点击input输入框输入,会展示默认的历史下拉菜单

    给input设置autocomplete="off"属性可解决此问题

  2. JAVAscript学习笔记 js异常 第二节 (原创) 参考js使用表

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. idea java项目部署至Tomcat服务器

    1. 服务器部署TomCat     1. 安装JDK,配置环境变量     > 变量名:JAVA_HOME;变量值:C:\Program Files\Java\jdk1.7.0_45      ...

  4. css 选择器和优先级

    css样式是做网页时,页面 布局不可或缺的关键点.但是在做网页时,会遇到一些明明已经设置了样式的元素,缺无法达到想要的效果,这种情况比较常见.这就涉及到优先级的问题了 要说到css的优先级,先来看下c ...

  5. 解决IE下CSS因 Mime 类型不匹配而被忽略的问题

    写页面的时候在chrome,firefox等页面上显示正常,但是换成IE9之后就完全没有样式了,报错信息是CSS 因 Mime 类型不匹配而被忽略,下面与大家分享下这个问题的相关的回答.IE真是个奇葩 ...

  6. C# 4动态编程新特性与DLR剖析

    =================================================== 注:很久没有发文了,贴一篇新文吧.从Word直接贴过来的,没仔细排版,诸位海涵.有关DLR和C# ...

  7. 《天书夜读:从汇编语言到windows内核编程》十 线程与事件

    1)驱动中使用到的线程是系统线程,在system进程中.创建线程API函数:PsCreateSystemThread:结束线程(线程内自行调用)API函数:PsTerminateSystemThrea ...

  8. Leetcode刷题

    Leetcode题库       本博客用于记录在LeetCode网站上一些题的解答方法.具体实现方法纯属个人的一些解答,这些解答可能不是好的解答方法,记录在此,督促自己多学习多练习.     The ...

  9. 用StringBuilder和StringBuffer实现的Unicode解码方法的比较(Java)

    初衷是用正则来写一个Unicode字符串转码的方法,一开始是打算结合StringBuilder写的,但是看到jdk7的Matcher.appendReplacement文档中一段示例代码用了Match ...

  10. 翻译连载 | 附录 A:Transducing(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...