Templates實戰(zhàn)之更優(yōu)雅實現(xiàn)自定義View構(gòu)造方法詳解
問題場景
之前寫過一篇文章: 2.@JvmOverloads快捷實現(xiàn)函數(shù)重載, 借助于Kotlin的默認(rèn)參數(shù)+@JvmOverloads簡化自定義View的構(gòu)造方法編寫:
簡化是簡化了,但是每次寫這么一大堆還是感覺好煩啊,比如忘記AttributeSet
類怎么拼寫的了等等。這就得拿出我們的秘密武器Live Templates
了。
瞧瞧Live Templates
Live Templates
可以簡單理解為實時模板,代碼編寫中可以動態(tài)根據(jù)輸入的關(guān)鍵字選擇性的插入模板內(nèi)容,比如常見的:
像我們常見的logd
、logi
、key
、const
、var
、val
等等快速生成模板代碼的指定都是通過Live Templates
進行實現(xiàn)的,比如:
logi
key
所以上面一大堆自定義View的構(gòu)造方法的模板代碼當(dāng)然也可以使用Live Templates
實現(xiàn)。
Live Templates自定義customView指令
- 指定聲明的指令名稱;
- 對聲明的指令的功能描述;
- 自定義View的模板代碼,其中使用
$CLASS_NAME$
、PARENT_CLASS
分別代表自定義View的類名和繼承的父類類名,相當(dāng)于占位符,需要開發(fā)者調(diào)用該指令時手動編寫指定,這里粘貼一份具體的內(nèi)容,方便大家復(fù)制:
class $CLASS_NAME$ @JvmOverloads constructor( context: Context, attributes: AttributeSet? = null, defStyleAttr: Int = 0 ): $PARENT_CLASS$(context, attributes, defStyleAttr) { }
指定該指令生效的文件范圍,這個不設(shè)置指令可能不會生效,比如當(dāng)前我指定的為kotlin:
經(jīng)過上面的配置customView
指令就生效了,我們看下效果:
當(dāng)從彈出的菜單中點擊該指令時,就會直接生成下面的代碼:
其中兩個紅框中的位置就是上面$CLASS_NAME$
、PARENT_CLASS
分別對應(yīng)的位置占位符,需要開發(fā)者手動編寫實現(xiàn)。
Edit variables進一步優(yōu)化
如果你感覺使用了customView
指令,還需要手動編寫上面兩個紅框中的內(nèi)容還是太麻煩,那這里我們還可以更進一步優(yōu)化:
比如第一個紅框中確定要自定義View的類名就是當(dāng)前文件名,那我們可以把第一個紅框中的內(nèi)容也交給Live Templates
生成,主要就是借助Live Templates
中的Edit variables
功能
細(xì)心的讀者有沒有發(fā)現(xiàn),Live Template
功能框中我們還有一個功能沒使用到:
點開看下:
之前講過,CLASS_NAME
和PARENT_CLASS
就是我們在Template text
內(nèi)容區(qū)中設(shè)置的兩個變量,分別代表自定義View的類名以及繼承的父類名稱。
CLASS_NAME
對應(yīng)變量如果確定了就是文件名,直接在上面Expression
一一覽中指定其生成規(guī)則為fileNameWithoutExtension()
,這樣輸入customView
時,Live Templates
就會自動幫助我們將CLASS_NAME
變量替換成當(dāng)前的文件名:
第一個紅框中就是自定生成的類名,我們只需要編寫第二個紅框中需要繼承哪個父類即可。
順便提一句,Edit variables
面板中Expression
還有很多其他的表達(dá)式生成規(guī)則:
進一步幫助我們生成模板代碼,提高開發(fā)效率,感興趣的可以自行探索。
總結(jié)
本篇文章主要以自動生成自定義View的構(gòu)造方法的模板代碼作為切入點,較詳細(xì)介紹了Live Templates
如何自定義指令及使用。當(dāng)然了Live Templates
的使用場景還有好多好多,想要使用Android Studio提高開發(fā)效率的同學(xué)一定需要好好了解一下,更多關(guān)于Templates自定義View構(gòu)造方法的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android 獲取內(nèi)外SD卡路徑幾種方法總結(jié)
這篇文章主要介紹了Android 獲得內(nèi)外SD卡路徑幾種方法總結(jié)的相關(guān)資料,需要的朋友可以參考下2016-12-12淺談 Android 7.0 多窗口分屏模式的實現(xiàn)
這篇文章主要介紹了淺談 Android 7.0 多窗口分屏模式的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03