最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Templates實(shí)戰(zhàn)之更優(yōu)雅實(shí)現(xiàn)自定義View構(gòu)造方法詳解

 更新時(shí)間:2022年09月01日 17:26:17   作者:長(zhǎng)安皈故里  
本篇文章介紹如何利用Android Studio提供的Live Templates更優(yōu)雅實(shí)現(xiàn)自定義View的構(gòu)造方法,說(shuō)句人話就是:簡(jiǎn)化自定義View構(gòu)造參數(shù)模板代碼的編寫,實(shí)現(xiàn)自動(dòng)生成,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

問(wèn)題場(chǎng)景

之前寫過(guò)一篇文章: 2.@JvmOverloads快捷實(shí)現(xiàn)函數(shù)重載, 借助于Kotlin的默認(rèn)參數(shù)+@JvmOverloads簡(jiǎn)化自定義View的構(gòu)造方法編寫:

簡(jiǎn)化是簡(jiǎn)化了,但是每次寫這么一大堆還是感覺(jué)好煩啊,比如忘記AttributeSet類怎么拼寫的了等等。這就得拿出我們的秘密武器Live Templates了。

瞧瞧Live Templates

Live Templates可以簡(jiǎn)單理解為實(shí)時(shí)模板,代碼編寫中可以動(dòng)態(tài)根據(jù)輸入的關(guān)鍵字選擇性的插入模板內(nèi)容,比如常見(jiàn)的:

像我們常見(jiàn)的logd、logikey、constvar、val等等快速生成模板代碼的指定都是通過(guò)Live Templates進(jìn)行實(shí)現(xiàn)的,比如:

logi

key

所以上面一大堆自定義View的構(gòu)造方法的模板代碼當(dāng)然也可以使用Live Templates實(shí)現(xiàn)。

Live Templates自定義customView指令

  • 指定聲明的指令名稱;
  • 對(duì)聲明的指令的功能描述;
  • 自定義View的模板代碼,其中使用$CLASS_NAME$、PARENT_CLASS分別代表自定義View的類名和繼承的父類類名,相當(dāng)于占位符,需要開(kāi)發(fā)者調(diào)用該指令時(shí)手動(dòng)編寫指定,這里粘貼一份具體的內(nèi)容,方便大家復(fù)制:
class $CLASS_NAME$ @JvmOverloads constructor(
    context: Context,
    attributes: AttributeSet? = null,
    defStyleAttr: Int = 0
): $PARENT_CLASS$(context, attributes, defStyleAttr) {
}

指定該指令生效的文件范圍,這個(gè)不設(shè)置指令可能不會(huì)生效,比如當(dāng)前我指定的為kotlin:

經(jīng)過(guò)上面的配置customView指令就生效了,我們看下效果:

當(dāng)從彈出的菜單中點(diǎn)擊該指令時(shí),就會(huì)直接生成下面的代碼:

其中兩個(gè)紅框中的位置就是上面$CLASS_NAME$、PARENT_CLASS分別對(duì)應(yīng)的位置占位符,需要開(kāi)發(fā)者手動(dòng)編寫實(shí)現(xiàn)。

Edit variables進(jìn)一步優(yōu)化

如果你感覺(jué)使用了customView指令,還需要手動(dòng)編寫上面兩個(gè)紅框中的內(nèi)容還是太麻煩,那這里我們還可以更進(jìn)一步優(yōu)化:

比如第一個(gè)紅框中確定要自定義View的類名就是當(dāng)前文件名,那我們可以把第一個(gè)紅框中的內(nèi)容也交給Live Templates生成,主要就是借助Live Templates中的Edit variables功能

細(xì)心的讀者有沒(méi)有發(fā)現(xiàn),Live Template功能框中我們還有一個(gè)功能沒(méi)使用到:

點(diǎn)開(kāi)看下:

之前講過(guò),CLASS_NAMEPARENT_CLASS就是我們?cè)?code>Template text內(nèi)容區(qū)中設(shè)置的兩個(gè)變量,分別代表自定義View的類名以及繼承的父類名稱。

CLASS_NAME對(duì)應(yīng)變量如果確定了就是文件名,直接在上面Expression一一覽中指定其生成規(guī)則為fileNameWithoutExtension(),這樣輸入customView時(shí),Live Templates就會(huì)自動(dòng)幫助我們將CLASS_NAME變量替換成當(dāng)前的文件名:

第一個(gè)紅框中就是自定生成的類名,我們只需要編寫第二個(gè)紅框中需要繼承哪個(gè)父類即可。

順便提一句,Edit variables面板中Expression還有很多其他的表達(dá)式生成規(guī)則:

進(jìn)一步幫助我們生成模板代碼,提高開(kāi)發(fā)效率,感興趣的可以自行探索。

總結(jié)

本篇文章主要以自動(dòng)生成自定義View的構(gòu)造方法的模板代碼作為切入點(diǎn),較詳細(xì)介紹了Live Templates如何自定義指令及使用。當(dāng)然了Live Templates的使用場(chǎng)景還有好多好多,想要使用Android Studio提高開(kāi)發(fā)效率的同學(xué)一定需要好好了解一下,更多關(guān)于Templates自定義View構(gòu)造方法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

元氏县| 治县。| 肥乡县| 榆社县| 平邑县| 新疆| 郯城县| 清水河县| 保德县| 甘南县| 博湖县| 子长县| 漯河市| 蒙山县| 兰州市| 建平县| 阳曲县| 荔波县| 德州市| 宜兰市| 察隅县| 平乐县| 吉林省| 海林市| 宝坻区| 宜城市| 伊通| 甘南县| 宜宾县| 微山县| 正蓝旗| 莱阳市| 湘阴县| 红安县| 平果县| 安塞县| 来安县| 阳山县| 济南市| 天台县| 青河县|