網站首頁 編程語言 正文
問題場景
之前寫過一篇文章: 2.@JvmOverloads快捷實現函數重載, 借助于Kotlin的默認參數+@JvmOverloads簡化自定義View的構造方法編寫:
簡化是簡化了,但是每次寫這么一大堆還是感覺好煩啊,比如忘記AttributeSet
類怎么拼寫的了等等。這就得拿出我們的秘密武器Live Templates
了。
瞧瞧Live Templates
Live Templates
可以簡單理解為實時模板,代碼編寫中可以動態根據輸入的關鍵字選擇性的插入模板內容,比如常見的:
像我們常見的logd
、logi
、key
、const
、var
、val
等等快速生成模板代碼的指定都是通過Live Templates
進行實現的,比如:
logi
key
所以上面一大堆自定義View的構造方法的模板代碼當然也可以使用Live Templates
實現。
Live Templates自定義customView指令
- 指定聲明的指令名稱;
- 對聲明的指令的功能描述;
- 自定義View的模板代碼,其中使用
$CLASS_NAME$
、PARENT_CLASS
分別代表自定義View的類名和繼承的父類類名,相當于占位符,需要開發者調用該指令時手動編寫指定,這里粘貼一份具體的內容,方便大家復制:
class $CLASS_NAME$ @JvmOverloads constructor( context: Context, attributes: AttributeSet? = null, defStyleAttr: Int = 0 ): $PARENT_CLASS$(context, attributes, defStyleAttr) { }
指定該指令生效的文件范圍,這個不設置指令可能不會生效,比如當前我指定的為kotlin:
經過上面的配置customView
指令就生效了,我們看下效果:
當從彈出的菜單中點擊該指令時,就會直接生成下面的代碼:
其中兩個紅框中的位置就是上面$CLASS_NAME$
、PARENT_CLASS
分別對應的位置占位符,需要開發者手動編寫實現。
Edit variables進一步優化
如果你感覺使用了customView
指令,還需要手動編寫上面兩個紅框中的內容還是太麻煩,那這里我們還可以更進一步優化:
比如第一個紅框中確定要自定義View的類名就是當前文件名,那我們可以把第一個紅框中的內容也交給Live Templates
生成,主要就是借助Live Templates
中的Edit variables
功能
細心的讀者有沒有發現,Live Template
功能框中我們還有一個功能沒使用到:
點開看下:
之前講過,CLASS_NAME
和PARENT_CLASS
就是我們在Template text
內容區中設置的兩個變量,分別代表自定義View的類名以及繼承的父類名稱。
CLASS_NAME
對應變量如果確定了就是文件名,直接在上面Expression
一一覽中指定其生成規則為fileNameWithoutExtension()
,這樣輸入customView
時,Live Templates
就會自動幫助我們將CLASS_NAME
變量替換成當前的文件名:
第一個紅框中就是自定生成的類名,我們只需要編寫第二個紅框中需要繼承哪個父類即可。
順便提一句,Edit variables
面板中Expression
還有很多其他的表達式生成規則:
進一步幫助我們生成模板代碼,提高開發效率,感興趣的可以自行探索。
總結
原文鏈接:https://juejin.cn/post/7138055043076325389
相關推薦
- 2023-01-28 詳解如何利用C#實現漢字轉拼音功能_C#教程
- 2022-07-19 Eureka注冊中心之搭建eureka-server
- 2024-02-27 Go 讀取控制臺輸入
- 2022-07-29 使用React?Router?v6?添加身份驗證的方法_React
- 2021-12-10 Ubuntu環境下mongodb安裝配置詳細步驟_MongoDB
- 2022-10-22 Kotlin淺析null操作方法_Android
- 2022-04-15 python實現請求數據包簽名_python
- 2022-06-01 Python實現訪問者模式詳情_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支