让你变懒的 Android Studio Live Templates
俗话说。不想偷懒的程序猿不是好程序猿。那么今天就教大家偷懒下!
先举个样例。我们在 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 等。你都能够直接输入 const、gone、starter 来高速操作。是不是认为非常酷炫!
那详细是怎样实现的呢?我们最好还是点击这些模板列表的 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 就完毕了。你能够任意打开一个类文件,然后输入 singleton 按 tab 或者 enter 键就能够看到奇妙的一幕出现了,是不是非常帅?
看完这篇文章想想自己还有哪些经常使用到的代码片段,赶紧把它定义成一个 Live Template 吧,你会发现你又能够变懒了!
本文原创公布于微信公众号 AndroidDeveloper「googdev」。转载请务必注明出处!
让你变懒的 Android Studio Live Templates的更多相关文章
- Android Studio 提高开发效率的插件
好久没有更新博客了,最近搞个listview搞得半死不活的,心累~~ 今天带来的是Android Studio插件的整理,全是我已经安装使用的,写这篇博文的目的也是因为我怕我自己给忘记怎么用(尴尬) ...
- android studio 项目生成的apk变小的原因
问题:感觉直接在apk文件夹下面拷出来的apk不能安装使用,而且apk比较小,可能就是这个问题引起的 Android Studio版本升级到2.3后,增加了instant run功能,对项目的buil ...
- 使用Android studio过程中发现的几个解决R变红的办法
刚开始使用Android studio的时候,好几次碰见新建了一个xml文件,或者new了一个activity之后,Android studio莫名其妙的报错了,而显示红色的地方就是常用的(R.id. ...
- Android Studio在代码重构中的妙用
代码重构几乎是每个程序员在软件开发中必须要不断去做的事情,以此来不断提高代码的质量.Android Stido(以下简称AS)以其强大的功能,成为当下Android开发工程师最受欢迎的开发工具,也是A ...
- Android Studio 多个编译环境配置 多渠道打包 APK输出配置
看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...
- Android Studio —— 重装 HAXM
Android Studio -- 重装 HAXM 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. Android SDK 自带模拟器一直以慢.卡 ...
- android studio你可能忽视的细节——启动白屏?drawable和mipmap出现的意义?这里都有!!!
android studio用了很久了,也不知道各位小伙伴有没有还在用eclipse的,如果还有,楼主真心推荐转到android studio来吧,毕竟亲儿子,你会知道除了启动速度稍微慢些,你找不到一 ...
- Android Studio快捷键
一.android studio 默认快捷键 刚开始接触一款开发软件,想必很想了解它的快捷方式,这会对你的编程起到很好的帮助,提高工作效率,接下来给你介绍下Android Studio一些常用的快 ...
- ubuntu 14.10 lts 64-bits环境下使用Android Studio
距离google发布android studio 1.0正式版已经两个月左右了.由于一直习惯使用eclipse+ADT的模式,而且曾在windows下试用一次Android Studio预览版,感觉卡 ...
随机推荐
- copy11
方法二 这种方法也比较简单,主要针对你没有.apk包的情况,比如Android原生自带的APP(计算器.通讯录.短信...),可以通过adb 命令. 1,打开APP. 2,执行> adb log ...
- oracle数据库表实现主键自增功能
有关oracle中自增序列sequence+触发器trigger:实现数据表TABDATA_LIVE_CYCLE中的主键id的自增. CREATE SEQUENCE TABDATA_LIVE_CYCL ...
- CLR类型设计之参数传递
写到这篇文章的时候,笔者回忆起来以前的开发过程中,并没有注意参数的传递是以值传递还是引用传递的,也是第一次了解到可变参数params,常用的不一定就代表理解,可能只是会用.接下来我们就一起回忆一下关于 ...
- 【转】WCF传输大数据的设置
在从客户端向WCF服务端传送较大数据(>65535B)的时候,发现程序直接从Reference的BeginInvoke跳到EndInvoke,没有进入服务端的Service实际逻辑中,怀疑是由于 ...
- struts2的简单执行过程
struts2是最近刚学的一个框架,想通过写篇文章来加深下印象,这也是本篇博文产生的由来,下面进入正题 Struts2本身是一个挺简单的框架,我们通过写一个登陆的过程来具体描述下其执行过程 1.首先我 ...
- 深入理解Postgres中的cache
众所周知,缓存是提高数据库性能的一个重要手段.本文着重讲一讲PostgreSQL中的缓存相关的东西.当然万变不离其宗,原理都是共同的,理解了这些,你也很容易把它运用到其它数据库中. What is a ...
- 《Metasploit魔鬼训练营》第四章(下)
p163 XSSF 默认kali 2.0中没有xssf,先下载:https://code.google.com/archive/p/xssf/downloads 将下载下来的zip文件解压,将其中的d ...
- 一个Win32API Trace Tool的设计与实现
用VC编程也有不短的时间了,对kernel32.advapi32.user32.gdi32等动态库里的API多数都已经很熟悉了.API是操作系统提供给应用程序的一组服务,很久以前就想要做个小工具,用来 ...
- 制作支持 BIOS+UEFI 的 U 盘 grub2+bootmgr 引导 + deepin_recovery + deepin_iso + win_pe
网盘下载:https://pan.baidu.com/s/1c2GXPo0 U盘为 FAT32,MBR分区表 1.下载:U盘grub2+bootmgr引导2017.12.6.2.7z 2.解压到 U盘 ...
- nginx启动脚本,手动编辑
nginx启动脚本,手动编辑 #! /bin/bash # chkconfig: - # description: nginx service XDIR=/www/server/nginx DESC= ...