什麼?你還不知道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(contextcontext, texttext, 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
(castcast) 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開發快捷鍵,熟知工具快速開發
如果你喜歡或者有了滿足感,記得點贊哦,如果有其他的快捷工具,記得評論分享哦,讓大家都知道下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章