欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

問題場景

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

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

瞧瞧Live Templates

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

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

logi

key

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

Live Templates自定義customView指令

  • 指定聲明的指令名稱;
  • 對聲明的指令的功能描述;
  • 自定義View的模板代碼,其中使用$CLASS_NAME$、PARENT_CLASS分別代表自定義View的類名和繼承的父類類名,相當(dāng)于占位符,需要開發(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è)置指令可能不會生效,比如當(dāng)前我指定的為kotlin:

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

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

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

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

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

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

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

點(diǎn)開看下:

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

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

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

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

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

總結(jié)

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

相關(guān)文章

  • Flutter中抽屜組件Drawer使用詳解

    Flutter中抽屜組件Drawer使用詳解

    這篇文章主要為大家詳細(xì)介紹了Flutter中抽屜組件Drawer使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 深入淺析Android坐標(biāo)系統(tǒng)

    深入淺析Android坐標(biāo)系統(tǒng)

    這篇文章主要介紹了 深入淺析Android坐標(biāo)系統(tǒng)的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • Android 獲取內(nèi)外SD卡路徑幾種方法總結(jié)

    Android 獲取內(nèi)外SD卡路徑幾種方法總結(jié)

    這篇文章主要介紹了Android 獲得內(nèi)外SD卡路徑幾種方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Android?獲取IP和UA實(shí)現(xiàn)示例詳解

    Android?獲取IP和UA實(shí)現(xiàn)示例詳解

    這篇文章主要為大家介紹了Android?獲取IP和UA實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 深入Android SQLite 事務(wù)處理詳解

    深入Android SQLite 事務(wù)處理詳解

    本篇文章是對Android中SQLite 事務(wù)處理進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下
    2013-05-05
  • Android仿京東搜索框漸變效果

    Android仿京東搜索框漸變效果

    這篇文章主要為大家詳細(xì)介紹了Android仿京東搜索框漸變效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Android 初識 Helloworld 詳解

    Android 初識 Helloworld 詳解

    在Eclipse+ADT中創(chuàng)建HelloWorld非常簡單,直接按照導(dǎo)航下一步就可以了。本文重點(diǎn)不在如何創(chuàng)建,而在理解HelloWorld項(xiàng)目的文件。需要的朋友可以參考下
    2013-07-07
  • Android實(shí)現(xiàn)自定義倒計(jì)時(shí)

    Android實(shí)現(xiàn)自定義倒計(jì)時(shí)

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)自定義倒計(jì)時(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 淺談 Android 7.0 多窗口分屏模式的實(shí)現(xiàn)

    淺談 Android 7.0 多窗口分屏模式的實(shí)現(xiàn)

    這篇文章主要介紹了淺談 Android 7.0 多窗口分屏模式的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Flutter實(shí)現(xiàn)心動(dòng)的動(dòng)畫特效

    Flutter實(shí)現(xiàn)心動(dòng)的動(dòng)畫特效

    為了追求更好的用戶體驗(yàn),有時(shí)候我們需要一個(gè)類似心跳一樣跳動(dòng)著的控件來吸引用戶的注意力。本文將利用Flutter實(shí)現(xiàn)這一動(dòng)畫特效,需要的可以參考一下
    2022-04-04

最新評論