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

先举个例子,我们在 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);
}

其中 ACTIVITYACTIVITY 代表当前所在的类名,CURSORCURSOR 代表当前鼠标的定位位置,同理 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;
}

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

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

点击 ok 保存,至此我们定义的一个单例的 Live Template 就完成了。你可以随意打开一个类文件,然后输入 singletontab 或者 enter 键就可以看到神奇的一幕出现了,是不是很帅?

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

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

让你变懒的 Android Studio Live Templates相关推荐

  1. android studio自定义类,为AndroidStudio设置自定义类注释

    我们在使用eclipse的时候,只要在类上面输入/**再按enter,就会出现类注释. package com.demo; /** * * @author chenjunxu * */ public ...

  2. Android Studio 卡在Download fastutil-8.4.0-sources jar以及New Module为灰色的问题及解决方法

    New Module为灰色是因为gradle卡在downloading fastutil-8.4.0-sources jar导致无法编译完成,所以无法新建模块. 网上看了很多方法,都没有解决,小白摸索 ...

  3. android Studio JDK环境变量配置

    Android Studio JDK环境变量配置 本机系统:win7 64位 JDK下载地址:https://www.oracle.com/technetwork/java/javase/downlo ...

  4. android studio 编译高级篇-gradle多版本编译,定制任务

    导读 本文旨在介绍Gradle构建的一些高级功能,包含了多版本编译.定制任务等功能: 为相同的app构建多个版本 如果在Gradle的过程中添加定制的任务 如何使用android库module 3.构 ...

  5. Android Studio 技巧

    一.Help | Find Action (Ctrl + Shift + A),这个快捷键非常有用,是一个命令查找,在任何时间,都可以执行此命令,输入你需要的操作,例如"extract me ...

  6. android变声后的文件,仿QQ语音变声功能实现(二)---移植到android studio 并解决部分问题...

    版权声明:转载必须注明本文转自张鹏辉的博客: http://blog.csdn.net/qingtiangg 大家好,距离上一篇博客半年过去了,关于上一篇博客很多人加我QQ留言问了几个问题,最近不忙决 ...

  7. 仿QQ语音变声功能实现(二)---移植到android studio 并解决部分问题

    版权声明:转载必须注明本文转自张鹏辉的博客: http://blog.csdn.net/qingtiangg 大家好,距离上一篇博客半年过去了,关于上一篇博客很多人加我QQ留言问了几个问题,最近不忙决 ...

  8. Android Studio下项目构建的Gradle配置及打包应用变体

    Gradle简介   Gradle是一个自动化构建工具,采用Groovy的Domain Specific Language(领域特定语言)来描述和控制构建逻辑.具有语法简洁.可读性强.配置灵活等特点. ...

  9. android活动中的变量,在不同的活动中保持变量值Android Studio

    我的应用程序中有选项卡式活动.在每个标签页中,我都有一个(切换)按钮,可以通过单击切换到打开和关闭.当我移动到另一个标签并回到相同的位置时,它就会熄灭.我想保持它的价值,以便在切换到其他活动时不会改变 ...

  10. java打开android_解决android studio 打开java文件 内容全变了的问题

    问题描述: 某天打开项目的activity的java文件界面突然变成下面这样了,但是用Notepad++打开代码什么的都正常,不知道什么原因造成的 解决办法 使用notepad++打开java文件,随 ...

最新文章

  1. 妨碍你成为CCIE的10个不良习惯
  2. w10系统老是自动息屏_大师解答win10系统无法自动关屏/待机和睡眠的恢复教程
  3. Intent 匹配规则
  4. 初始springCloud
  5. 求出该数组中特定元素的和,特定元素是指个位和十位不包含7的偶数。
  6. python自动化工具哪个好用_微软最强 Python 自动化工具开源了!不用写一行代码!...
  7. 聊一聊开发常用小工具
  8. 2022年百度新能源汽车行业洞察
  9. concat() “+“ 和 append() 的区别
  10. 深度学习技术在社会化推荐场景中的总结(附数据集)
  11. 940mx黑苹果驱动_让黑苹果变得更完美——BCM94532HMB无线蓝牙接力完美驱动!
  12. iptables,haproxy转发ftp(21端口)
  13. UVa272 - Tex Quotes
  14. tomcat安装配置教程
  15. 12.MongoDB之固定集合(Capped Collections)
  16. 选LinuxMint Debian Edition作为俺的家用Linux了
  17. 《Maya 2009高手之路》-115网盘下载
  18. 昂达平板不能开机刷机_昂达平板刷机V811 V701 V702 V711刷错固件刷回方法
  19. 仿美洽客服系统-gin框架内核独立自主源码开发在线客服系统
  20. win10系统不能多开服务器,win10游戏不能双开如何处理_win10电脑游戏双开同时运行操作方法...

热门文章

  1. redis下key的过期时间详解
  2. Lightroom Classic 教程,如何将照片从 Lightroom 移至Ps,在 Ps 中为照片应用滤镜?
  3. 在MAC环境下之以太坊(ethereum)开发环境安装
  4. pd虚拟机 17.1.2 Intel核心Mac专用版
  5. 如何用键盘快捷键打开 macOS 控制中心?
  6. 有趣的mysql string和0比较返回1的问题
  7. 如何让Activiti-Explorer使用sql server数据库
  8. [实战]MVC5+EF6+MySql企业网盘实战(20)——Bootstrap Paginator
  9. DNS在企业网络中的应用(一)
  10. JAVA 使用Dom4j 解析XML