什么?你还不知道Android studio里有个Live Template?

前言

作为Android程序员,之前IDE从Eclipse转移到Android Studio,开始很多快捷键等可能还是沿用之前的Eclipse方式,但是当使用时间经过很久以后,并且随着Android Studio的版本不断升级,相信很多人都认识到了AS的强大。 但是仍然还是有部分童鞋没有完全认识到AS真正的强大。
电影对白:
AS:你懂我?
我:我当然懂你啊。
AS:你真以为你懂我?那我创建代码模板怎么用?
我:…,让我查下。
AS:哼,你不爱我!我不喜欢你了。
如果哪个电影导演看上了这个剧本,欢迎回复联系我,商量下分成的事。

AS自带模板

以前我们写代码,或许偶有些时候碰巧遇到了某些快速生成代码的快捷键,但是并不能认识所有的模板,所以也有必要学习下你用到的到底是什么。
比如以前我也不关注这些,都是代码敲出来的,但是等我遇到别人这么使用时,我去,还有这种操作,我太out了。
以前的我写TAG:
在这里插入图片描述
使用系统模板之后:
在这里插入图片描述
感受一下同志们,虽然时间节约不多少,但是在大规模编码时比如会连续创建很多个类,你会很厌恶写重复的代码,更厌恶不断的写错修改。而现在你知道Live Template后你只需要输入logt然后按Tab或者回车键就ok了。
当然系统提供的不仅仅是这个,下面是Settings里提供的所有模板,刚才的log在AndroidLog组中。在File->Settings->Editor->LiveTemplates里。
在这里插入图片描述下面我们列出一些常用的模板:
1.psfi
public static final int,帮助我们写多个常量时快速生成。
psfs
public static final String
2.key
private static final String KEY_$value$ = $value$;
3.Toast
Toast.makeText( c o n t e x t context , t e x t text , Toast.LENGTH_SHORT).show();
4.forii
for (int i = 0; i ; i++) {};变量i作为索引for循环
5.itco遍历Collection集合
for (Iterator iterator = collection.iterator(); iterator.hasNext(); ) {
Object next = iterator.next();
}

6.starter开启Activity方法
public static void start(Context context) {
Intent starter = new Intent(context, $ACTIVITY$.class);
starter.putExtra($CURSOR$);
context.startActivity(starter);
}
7.fbc快速生成findViewbyId
( c a s t cast ) findViewById(R.id.$resId$);
其他的童鞋们可以自己到IDE浏览下,这里只是抛砖引玉,大概介绍下。

自定义模板

像自定义tag这种比较少的代码可能看不出节省多少,但是我们可以根据自己的需要,去创建一些模板生成更多的代码。
我们都知道有些工具类或者管理类,我们会设为单例模式,但是那个单例模式就代码比较多了,还老写错,有时候新项目集中编码时,连续的为每个不同的类写单例,真是“what the f**",气死人。而看了这个模板,我们可以自己写个单例模式,而且还可以写好多种不同的单例。如果需要学习单例,请查看设计模式之单例模式的几种写法
假如我们写一个大家经常写的双重检查锁的单例。代码量如下:

public class Singleton {
    private static Singleton instance = null;

    private Singleton() {
    }

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

下面我们来定义模板。
1.打开AS的File->Settings->Editor->LiveTemplate,点击右上角的 + 号,选择 Template Group ,可以为自己自定义的模板分个组,以后可以继续添加,和系统原生的分开,比如我取名diy或者Instance或者自己的英文名Zephyr(我的),由于我开始设了个diy分组,这里为了演示,我新增个分组。
首先我们需要先把模板代码列出来:

private static $NAME$ instance = null;

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

由于为不同的类设置单例,需要不同的类名,所以我们需要创建一个变量,这里为$NAME$,我们在创建模板时还需要为这个变量设置值为ClassName和使用范围。
在这里插入图片描述这里之后,创建这个双重检查锁的单例模板就完成了,下面我们演示下使用。
在这里插入图片描述
快不快?6不6,刷一波鲜花不,不刷个火箭意思下?点个赞也行。以后妈妈再也不用担心我写单例代码了。
当然了,如果你看了我的单例文章,更喜欢静态内部类的单例写法。这里也把源码附上:

private $NAME$() {
}

public static $NAME$ getInstance() {
    return SingletonHolder.instance;
}

private static class SingletonHolder {
    private static final $NAME$ instance = new $NAME$();
}

当然了,如果我们不满足原生的模板,我们也可以改掉原生的嘛,比如,我们自己的工程为了统一管理log打印,我们可能不会使用系统的Log.d这种,可能我们叫做LogUtils.d,那么我们完全可以把系统的logd模板改为我们自己的logutils。当然其他的还有很多类型和xml、groovy的代码都可以添加自定义的模板。

文件模板

说了这么多,我又想创建文件时直接创建好我的类文件,干嘛非要先创建类再使用这些模板。当然了,这是可以的。
我们创建类文件时,通常会选择Class,这其实就是个模板,我们还可以选择Singleton,还可以选择SuperClass,还可以选择要实现的Interface。
在这里插入图片描述通常很多开发直接选择了Class,然后再去手动编码加上implement或者加上单例代码。但是其实文件模板也是有的,就比如上图的Singleton,你可以试下。
这里就生成了一个普通的单例模式的Work类,并实现BaseWork接口。
在这里插入图片描述是不是很简单,这里只演示了系统提供的文件模板,但是我不满足怎么办,当然可以,满足你。
这个其实就是个文件模板,你可以跟代码的Live Template一样去修改、添加、删除 文件模板。
在这里插入图片描述比如改成你喜欢的单例方式,或者固定添加TAG,或者为Activity添加固定模板,一切以你自己的常用的业务代码为主,学习系统默认的模板代码,你就基本上可以改好自己需要的模板类文件。

后记

记住,懒是社会的动力,效率是声明,当同事在你身后看你一顿操作猛如虎的时候,是不是大有高级程序员、黑客的感觉,Chua、 Chua、 Chua,好多代码就生成了。这时候,你只要嘴角上扬,冷笑一声:“这有什么,这都是基本操作!想学么,请我吃饭我就教你。"这逼装的,睡觉都得笑醒。 如果还想提高逼格,可以了解下另一篇文章:你必须知道的linux开发快捷键,熟知工具快速开发
如果你喜欢或者有了满足感,记得点赞哦,如果有其他的快捷工具,记得评论分享哦,让大家都知道下。

发布了23 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/caizehui/article/details/105325008