提升Android Studio開發體驗:使用Kelp插件實現顏色和圖標預覽

提升Android Studio開發體驗:使用Kelp插件實現顏色和圖標預覽

在Android開發中,自動補全功能對于提高開發效率至關重要。然而,默認的Android Studio并不能預覽顏色和圖標,這使得開發者在選擇資源時常常感到困惑。本文將介紹如何使用Kelp插件,為Android Studio添加顏色和圖標預覽功能,從而提升開發體驗。

Kelp插件簡介

Kelp插件是一款功能強大的工具,旨在為Android Studio添加各種增強功能,改善開發者體驗。它支持以下關鍵功能:

  • 自動補全中的暗色和亮色預覽 🎨
  • 自動補全中的圖標預覽 🔍
  • 組件函數的可自定義圖標
  • 可在Git中存儲和共享的Live Templates ??
  • KDoc圖像渲染等

安裝Kelp插件

首先,從Kelp GitHub倉庫下載最新版本的插件,并通過以下路徑手動安裝:

Settings/Preferences > Plugins > ?? > Install plugin from disk....

接下來,創建一個名為config.json的配置文件,放置在.idea/kelp目錄中。該文件將用于配置插件的各種功能。此外,為確保團隊中的每個人都在使用該插件,您可以創建一個externalDependencies.xml文件進行通知。

注意:確保您使用的是Android Studio Koala 2024.1.1 Canary 3或更高版本。

設置顏色預覽 🎨

要啟用顏色預覽功能,首先需要按照以下方式實現您的顏色系統:

class GetcontactColor(val primary: Color,val secondary: Color,
) {/*** This class must have MUST structure and name.* It MUST be placed here.* You can create it manually or autogenerate it using code generators.*/private class KelpColorPreview {/*** The pattern is "name_lightColor_darkColor"* If you don't have a dark theme, you MUST set `darkColor`* to be the same as `lightColor`, then it won't be rendered.* * Colors MUST be in ARGB:* The format of an ARGB hexadecimal color is AARRGGBB. * AA is the alpha channel. It represents the opacity of the color. * RR is the red value, GG is the green, and BB is the blue.* * If your colors are in RGB format, just add FF to them, * representing no transparency.*/val primary_FFD0BCFF_FF6650A4 = Unitval secondary_12CCC2DC_FF625B71 = Unit}
}// or it can be declared like this
// it's just important for the color to be a val apperantly.
class GetcontactColor2 {private var _primary: Color by mutableStateOf(...)val primary: Color = _primaryprivate var _secondary: Color by mutableStateOf(...)val secondary: Color = _secondaryprivate class KelpColorPreview {val primary_FFD0BCFF_FF6650A4 = Unitval secondary_12CCC2DC_FF625B71 = Unit}
}

然后,在config.json文件中添加以下配置,以啟用代碼補全和gutter預覽:

{"colorPreview": {"codeCompletionEnabled": true,"gutterEnabled": true}
}

保存config.json文件后,插件將自動應用新的更改。效果如下:

設置圖標預覽 🔍

圖標預覽功能使得開發者在使用圖標時能夠更直觀地看到實際效果。我們團隊有20多名Android開發者,使用圖標時經常會遇到重復問題。通過使用ImageVector這種穩定類型管理圖標,我們實現了高效的圖標管理。

以下是圖標管理的實現示例:

class AwesomeIcon {val direction: ImageVector@Composableget() = ImageVector.vectorResource(id = R.drawable.ic_direction)val feedback: ImageVector@Composableget() = ImageVector.vectorResource(id = R.drawable.ic_feedback)// 其他圖標定義...
}internal val LocaleIcon = staticCompositionLocalOf { AwesomeIcon() }object AwesomeTheme {val icons: AwesomeIcon@Composable@ReadOnlyComposableget() = LocaleIcon.current
}@Composable
fun AwesomeTheme(icons: AwesomeIcon = AwesomeTheme.icons,content: @Composable () -> Unit,
) {CompositionLocalProvider(LocaleIcon provides icons,) {content()}
}

要啟用圖標預覽功能,在config.json文件中添加以下配置:

{"iconsRendering": {"codeCompletionEnabled": true,"gutterEnabled": true,"containerClassName": "com.yourpackage.AwesomeIcon"}
}

由于插件將類中的圖標名稱映射到實際資源以進行預覽,變量名必須與資源匹配。我們的資源通常以“ic_”開頭,因此可以在配置文件中添加映射器:

{"iconsRendering": {"propertyToResourceMapper": {"addPrefix": "ic_","convertToSnakeCase": true}}
}

保存配置文件后,您將看到圖標預覽效果:

為設計系統組件添加預覽圖標


此功能允許您為設計系統的組件添加預覽圖標,特別適用于擁有大量組件的UI套件。要啟用該功能:

  1. .idea/kelp目錄中添加一個名為dsComponentFunIcon的40x40 SVG圖標。

注意:您還可以選擇添加一個名為dsComponentFunIcon_dark.svg的暗色版本。

  1. config.json文件中添加以下配置:
{"componentFunHighlighting": {"functionFqnPrefix": "app.source.getcontact.uikit.component.","functionSimpleNamePrefix": "Getcontact" // 可選,用于限制僅針對具有特定前綴的組件}
}

插件將僅為您提供的包下的可組合組件添加此預覽圖標。

設置共享Live Templates ??

即使可以通過不同方式實現,Kelp插件使得通過Git共享Live Templates變得更加容易。只需將Live Templates添加到config.json文件中:

{"liveTemplates": [{"abbreviation": "gth","text": "GetcontactTheme.dimensions.$CODE_COMPLETION$","description": "Writes \"GetcontactTheme.\""},{"abbreviation": "gco","text": "GetcontactTheme.colors.$CODE_COMPLETION$","description": "Writes \"GetcontactTheme.colors\""},{"abbreviation": "gty","text": "GetcontactTheme.typography.$CODE_COMPLETION$","description": "Writes \"GetcontactTheme.typography\""},{"abbreviation": "gic","text": "GetcontactTheme.icons.$CODE_COMPLETION$","description": "Writes \"GetcontactTheme.icons\""}// 其他模板...]
}

保存后,您可以通過Git共享這些模板文件。

結語

Kelp插件為Android Studio帶來了諸多強大功能,極大地提升了開發體驗。通過本文介紹的方法,您可以輕松設置顏色和圖標預覽功能,并在設計系統組件中添加預覽圖標。此外,Kelp插件還提供了便捷的Live Templates共享方式,進一步提高了團隊協作效率。

好了,kelp基本功能介紹完畢,下面是kelp的倉庫地址。

Github

https://github.com/ozontech/kelp

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40302.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40302.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40302.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C語言小知識】備選拼寫:iso646.h頭文件

備選拼寫:iso646.h頭文件 C語言中有3種邏輯運算符: 邏輯運算符含義&&與||或!非 假設exp1和exp2是倆個簡單的關系表達式,那么 當且僅當exp1和exp2都為真時,exp1 && exp2才為真。如果exp1或exp2為真,…

【學習筆記】Fréchet距離的 C 語言實現

Frchet 距離 Frchet 距離,又稱為弗雷歇距離,是一種衡量兩條曲線(或兩個路徑)之間相似性的度量方法。這個概念最初在度量空間理論中被定義,后來被廣泛應用于計算機科學、地理信息系統、圖像處理、生物信息學等多個領域…

使用Python實現深度學習模型:遷移學習與領域自適應教程

引言 遷移學習和領域自適應是深度學習中的兩個重要概念。遷移學習旨在將已在某個任務上訓練好的模型應用于新的任務,而領域自適應則是調整模型以適應不同的數據分布。本文將通過一個詳細的教程,介紹如何使用Python實現遷移學習和領域自適應。 環境準備…

Visual Studio常見問題

VS的文件路徑為什么要用雙斜杠(\)? 答:在編程時,寫入文件的路徑如image = cvLoadImage("C:\Users\lyb\Documents),這種寫法在編譯時不會報錯,但在運行時會報錯,報錯圖像讀入為空,這是因為Windows的路徑雖然用的是單斜杠,但在編程時的意義是不同的,單斜杠“\”…

Go語言中的可變參數:靈活而強大的函數參數

Go語言中的可變參數:靈活而強大的函數參數 在Go語言中,可變參數是一種非常有用的特性,它允許函數接受任意數量的參數。這種靈活性使得函數可以更加通用和可復用。本文將深入探討Go語言中可變參數的用法、原理和最佳實踐。 什么是可變參數? 可變參數允許你傳遞零個或多個值給…

LNMP架構搭建Discuz論壇

LNMP架構是一種用于搭建Web服務器環境的常用架構,由Linux、Nginx、MySQL和PHP組成 組成功能Linux作為操作系統的基礎,提供穩定的環境Nginx作為反向代理服務器,處理客戶端的請求并將他們轉發給后端的應用服務器MySQL作為關系型數據庫管理系統…

7.2 數據結構

作業 #include <stdio.h> #include <string.h> #include <stdlib.h> struct student {char name[32];int age;double score; }s[3];void stu_input(struct student *s,int n) {printf("請輸入%d個學生的信息&#xff08;姓名&#xff0c;年齡&#xff0…

【服裝識別系統】圖像識別+Python+人工智能+深度學習+算法模型+TensorFlow

一、介紹 服裝識別系統&#xff0c;本系統作為圖像識別方面的一個典型應用&#xff0c;使用Python作為主要編程語言&#xff0c;并通過TensorFlow搭建ResNet50卷積神經算法網絡模型&#xff0c;通過對18種不同的服裝&#xff08;‘黑色連衣裙’, ‘黑色襯衫’, ‘黑色鞋子’, …

Python機器學習實戰:利用決策樹算法預測鳶尾花種類

引言 在人工智能領域&#xff0c;機器學習作為一種強大的工具正在改變我們對數據的認知和處理方式。Python因其豐富的機器學習庫和直觀易用的特性&#xff0c;成為了眾多開發者首選的語言。本篇文章將帶領大家深入了解如何運用Python中的scikit-learn庫來構建決策樹模型&#…

關系型數據庫和矢量數據庫分別適用于哪些領域?

關系型數據庫和矢量數據庫分別適用于哪些領域&#xff1f; 李升偉 關系型數據庫適用于以下領域&#xff1a; 1. 金融行業&#xff1a;如銀行的交易處理、賬戶管理等&#xff0c;對數據的一致性和事務處理要求極高。 2. 企業資源規劃&#xff08;ERP&#xff09;&#xff1a…

Meta 發布 Meta 3D Gen 文本生成3D模型

Meta推出了 Meta 3D Gen &#xff08;3DGen&#xff09;&#xff0c;這是一種用于文本到 3D 資產生成的最先進的快速管道。3DGen 可在一分鐘內提供具有高提示保真度和高質量 3D 形狀和紋理的 3D 資產創建。 它支持基于物理的渲染 &#xff08;PBR&#xff09;&#xff0c;這是…

網口串口(Serialport)服務器

文章所用工具http://t.csdnimg.cn/2gIR8http://t.csdnimg.cn/2gIR8 搭建服務器界面 操作配置文件保存方式類 public string FileName { get; set; }public IniHelper(string name) {this.FileName name; //在構造函數中給路徑賦值} 1 先導入c語言進行讀取操作ini文件的方法 …

Python基于you-get下載網頁上的視頻

? 1.python 下載地址 下載 : https://www.python.org/downloads/ 2. 配置環境變量 配置 python_home 地址 配置 python_scripts 地址 在path 中加入對應配置 3. 驗證 ? C:\Users>python --version Python 3.12.4C:\Users>wheel version wheel 0.43.04. 下載 c…

Android SurfaceFlinger——本地窗口連接EGL API(二十四)

通過前面的文章我們屬性了 Surface 和 EGLSurface 的相關內容,這里我們繼續分析讓兩者相關聯的函數 native_window_api_connect()。 一、連接EGL API 1、window.h native_window_api_connect 源碼位置:/frameworks/native/libs/nativewindow/include/system/window.h st…

2024華為OD機試真題-分月餅-(C++/Python)-C卷D卷-200分

2024華為OD機試題庫-(C卷+D卷)-(JAVA、Python、C++) 題目描述 中秋節,公司分月餅,m 個員工,買了 n 個月餅,m ≤ n,每個員工至少分 1 個月餅,但可以分多個,單人分到最多月餅的個數是 Max1 ,單人分到第二多月餅個數是 Max2 ,Max1 - Max2 ≤ 3 ,單人分到第 n - 1…

Python從入門到放棄——浮點型變量

浮點型變量 前言 上一篇文章我們研究了整數類型變量&#xff0c;本次我們來開始研究一下浮點類型變量。 浮點類型 浮點數在計算機編程中扮演著重要的角色。它們是一種特殊的數據類型&#xff0c;用于存儲和處理小數或實數。在Python中&#xff0c;浮點數是由小數點分隔的…

如何在PhpStorm中運行SQL文件?

如何在PhpStorm中運行SQL文件&#xff1f; 提問&#xff1a;如何在PhpStorm中運行SQL文件&#xff1f; 解答&#xff1a;本文將詳細介紹如何在PhpStorm中運行SQL文件的步驟&#xff0c;包括如何配置數據庫連接和執行SQL腳本&#xff0c;并附帶示例SQL代碼。 1. 配置數據庫連…

迎接創新浪潮!RFID國軍標助力數字化裝備場轉型

隨著大數據、物聯網的飛速發展&#xff0c;數字化轉型已成為軍事發展的核心戰略之一。在這一重大歷史進程中&#xff0c;廣州一芯未來的RFID國軍標呈現出獨特而重要的作用。它不僅提升了裝備管理的效率和準確性&#xff0c;還增強了裝備的安全保障和資源配置的合理性。它以高效…

標題:哈爾濱等保測評:技術、管理和人員的協同作戰

在大數據時代&#xff0c;信息安全成為各行業不可忽視的關鍵議題。哈爾濱作為東北地區重要的經濟和科技中心&#xff0c;其等保測評工作更是成為了網絡安全領域的焦點。等保測評&#xff0c;即信息安全等級保護測評&#xff0c;不僅檢驗著技術的先進性&#xff0c;也考驗著管理…