让你变懒的 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;}
其中 $$ 代表是一个变量,中间包裹着这个变量的名字,你可以对这个变量声明类型,这个后面再说。
是不是很容易理解呢?如果理解了那么就可以来根据自己的使用习惯来定义自己的 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 按钮,来对该变量进行编辑,我们选择 calssName() 选项,可以看到还有其他选项,但是看名字大家大概就猜到什么含义了,这里就不一一解释了。
点击 ok 保存,至此我们定义的一个单例的 Live Template 就完成了。你可以随意打开一个类文件,然后输入 singleton 按 tab 或者 enter 键就可以看到神奇的一幕出现了,是不是很帅?
看完这篇文章想想自己还有哪些常用到的代码片段,赶紧把它定义成一个 Live Template 吧,你会发现你又可以变懒了!
文章转载自 开源中国社区[http://www.oschina.net]

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android 缺陷一年多没修正,因供应链太复杂
科技网站TechCrunch今天刊文称,Android存在迟迟不能发布补丁软件修正安全缺陷的问题,这与其生态链过于庞大,有大量第三方设备、元器件厂商存在有关。第三方设备、元器件厂商也可能引入安全缺陷。不过好在谷歌已经开始加强与第三方厂商的合作,以提高Android安全性。 以下为文章全文: 上周,一名安全研究人员在Android全盘加密功能中发现一处缺陷,利用它可以对设备解密。但高通声称,它曾在2014年11月和2015年2月向谷歌通报相关缺陷,谷歌在今年1月和5月发布了补丁软件,这意味着,在获悉存在缺陷一年多后,谷歌才发布了补丁软件。 谷歌这次发布补丁软件,正值美国联邦贸易委员会、美国联邦通信委员会(以下简称“FCC”)宣布对谷歌和其他智能手机厂商发布补丁软件的速度展开调查之际。FCC称,Android中的Stagefright缺陷是促使它展开这次调查的缺陷之一。 由于美国上下对加密的关注,谷歌一年多后才发布补丁软件似乎是个令人瞩目的问题。要搞清楚用户5月份才获得补丁软件的原因,读者需要对Android设备复杂的供应链和Android确保庞大供应链安全的方法有所了解。 供应链的复杂性...
- 下一篇
活久见!部分 Nexus 6 遭谷歌强制降级至 Android 7.0
作为全球应用最广的操作系统,谷歌一直控制着安卓系统的更新和维护。对于很多手机而言,能够最快的享受最新的操作系统,无疑是一件让人兴奋的事情。 但是对于其他安卓手机而言,最快享受最新的操作系统,除了谷歌亲儿子外,例如 Pixel,其他手机很难第一时间享受最新的系统。不过,最近谷歌做出了一件让人人神共愤的事情,那就是将已经升级到 Android 7.1.1 的 Nexus 6 强制降级到 Android 7.0。 据部分用户反映,他们收到了谷歌的降级包推送,感到匪夷所思,而且官方没有对此进行说明解释。 按照外界的分析,第一版的 Android 7.1.1 存在一些 BUG,但在近日发布的 3 月更新中基本得到了修复。然而,不幸的是,Android Pay 挂了,可能与此有关或者谷歌发现了新的问题。 另外,大家无语的是,按照谷歌工程团队的说法,运行降级包退回 7.0 后,所有的软件都无法使用,还得重新进行一次恢复出厂。 本文来自开源中国社区 [http://www.oschina.net]
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Mario游戏-低调大师作品