提升Android Studio开发体验:使用Kelp插件实现颜色和图标预览

news2024/11/17 20:37:29

提升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 = Unit
    val 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 = _primary

  private var _secondary: Color by mutableStateOf(...)
  val secondary: Color = _secondary

  private class KelpColorPreview {
    val primary_FFD0BCFF_FF6650A4 = Unit
    val secondary_12CCC2DC_FF625B71 = Unit
  }
}

然后,在config.json文件中添加以下配置,以启用代码补全和gutter预览:

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

保存config.json文件后,插件将自动应用新的更改。效果如下:

设置图标预览 🔍

图标预览功能使得开发者在使用图标时能够更直观地看到实际效果。我们团队有20多名Android开发者,使用图标时经常会遇到重复问题。通过使用ImageVector这种稳定类型管理图标,我们实现了高效的图标管理。

以下是图标管理的实现示例:

class AwesomeIcon {
    val direction: ImageVector
        @Composable
        get() = ImageVector.vectorResource(id = R.drawable.ic_direction)

    val feedback: ImageVector
        @Composable
        get() = ImageVector.vectorResource(id = R.drawable.ic_feedback)
    // 其他图标定义...
}

internal val LocaleIcon = staticCompositionLocalOf { AwesomeIcon() }

object AwesomeTheme {
    val icons: AwesomeIcon
        @Composable
        @ReadOnlyComposable
        get() = 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.coloradmin.cn/o/1891799.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sql优化-单表优化

文章目录 0、索引优化原则1、在docker内部连接mysql2、数据准备3、创建表 dept 和 emp4、插入50万数据到 emp 表中4.1、创建函数4.2、存储过程4.3、调用存储过程 5、查找姓名以"abc"开头的员工信息5.1、执行计划 select * from emp where name like abc%;5.2、sql优化…

容器部署rabbitmq集群迁移

1、场景: 因业务需要,要求把rabbitmq-A集群上的数据迁移到rabbitmq-B集群上,rabbitmq的数据包括元数据(RabbitMQ用户、vhost、队列、交换和绑定)和消息数据,而消息数据存储在单独的消息存储库中。 2、迁移要…

大模型备案全网最详细流程【附附件】

本文要点:大模型备案最详细说明,大模型备案条件有哪些,《算法安全自评估报告》模板,大模型算法备案,大模型上线备案,生成式人工智能(大语言模型)安全评估要点,网信办大模型备案。 大模型备案安…

火山云存储TOS前端预签名上传文件

使用POSTMAN中的PUT方法,Body选择binary, 然后添加文件,可以上传图片,视频,音频等

大模型概述-定义/分类/训练/应用

大模型概述 随着时代的发展, 大模型各个领域的应用正在不断扩大. 本文尽力梳理各种材料, 将从概念定义, 类型分类, 训练以及应用等方面对大模型进行一个简要的概述. 如果你想了解大模型但是却缺乏基础的知识或者觉得无从下手, 那么阅读该文章可能对你有所帮助. 如果想了解更多…

SQL Server数据库的组成

《SQL Server 2022从入门到精通(视频教学超值版)》图书介绍-CSDN博客 对于数据库的概念,没有一个完全固定的定义,随着数据库历史的发展,定义的内容也有很大的差异,其中一种比较普遍的观点认为,…

Halcon OCR字符识别(极坐标转换,字符识别)

Halcon OCR字符识别(极坐标转换,字符识别) 代码 * 1.加载图片 *************************************************** dev_close_window () read_image (Image, ./img) get_image_size (Image, Width, Height) dev_get_window (WindowHandle…

153. 寻找旋转排序数组中的最小值(中等)

153. 寻找旋转排序数组中的最小值 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转:153. 寻找旋转排序数组中的最小值 2.详细题解 如果不考虑 O ( l o g n ) O(log n) O(logn)的时间复杂度,直接 O ( n ) O(n) O(n)时间复杂…

Springboot+Vue3开发学习笔记《1》

SpringbootVue3开发学习笔记《1》 博主正在学习SpringbootVue3开发,希望记录自己学习过程同时与广大网友共同学习讨论。 一、前置条件 博主所用版本: IDEA需要破解,破解工具链接容易挂,关注私聊我单发。 Spring Boot是Spring提…

「媒体邀约」天津媒体资源?媒体邀约宣传报道

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体宣传加速季,100万补贴享不停,一手媒体资源,全国100城线下落地执行。详情请联系胡老师。 天津拥有丰富的媒体资源,利用这些资源进行有效…

C语言 -- 函数

C语言 -- 函数 1. 函数的概念2. 库函数2.1 标准库和头文件2.2 库函数的使用方法2.2.1 功能2.2.2 头文件包含2.2.3 实践2.2.4 库函数文档的一般格式 3. 自定义函数3.1 函数的语法形式3.2 函数的举例 4. 形参和实参4.1 实参4.2 形参4.3 实参和形参的关系 5. return 语句6. 数组做…

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爬虫系列-让爬虫自己写爬虫(半自动化,代替人工写爬虫)

现在的PC、手机客户端等终端设备大量使用了网页前后端技术&#xff0c;另外主流的网站也会经常会更新&#xff0c;导致以前一个月更新一次爬虫代码&#xff0c;变成了天天需要更新代码&#xff0c;所以自动化爬虫技术在当前就显得特别重要&#xff0c;最近我也是在多次更新某个…

Linux高并发服务器开发(十一)UDP通信和本地socket通信

文章目录 1 TCP和UDP的区别2 UDPAPI流程服务端流程客户端流程 代码服务端客户端 3 本地socket通信服务端客户端客户端代码 1 TCP和UDP的区别 2 UDP API 流程 服务端流程 客户端流程 代码 服务端 #include<sys/socket.h> #include<stdio.h> #include<arpa/in…

R语言学习,入门

我是一名6年开发经验的程序员&#xff0c;后端&#xff0c;大数据&#xff0c;前端都会。 现在加入了医疗行业&#xff0c;要做数据分析&#xff0c;前同事的实验室生信专业的&#xff0c;用的是R语言&#xff0c;为了跑通他的程序。就来学一下吧&#xff0c;看了一下好像挺简…

【网络安全的神秘世界】SQL注入(下)

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 3.7 二次注入 不好挖这个漏洞&#xff0c;需要搞懂业务逻辑关系 二次注入通常是指在存入数据库时做了过滤&#xff0c;但是取…

介绍东芝TB62262FTAG芯片:高性能两相双极步进电机驱动器

在当今快速发展的科技领域&#xff0c;高性能的电机驱动器对于许多工程项目来说至关重要。东芝的TB62262FTAG这款两相双极步进电机驱动器采用PWM斩波技术&#xff0c;集成了多个先进功能&#xff0c;适用于各种工业和消费类应用。本文将详细介绍TB62262FTAG的参数、性能、优势及…

JVM原理(十三):JVM虚拟机类类加载器与双亲委派模型

1. 类加载器 Java虛拟机设计团队有意把类加载阶段中的“通过一个类的全限定名来获取描述该类的二进制字节流"这个动作放到Java虚拟机外部去实现&#xff0c;以便让应用程序自己决定如何去获取所需的类。实现这个动作的代码被称为“类加载器”(Class Loader)。 对于任意一…

任天堂称未来第一方游戏不会使用生成式AI

虽然EA、育碧、暴雪、Embracer等西方游戏厂商都大力支持生成式AI技术&#xff0c;但日本老牌游戏公司任天堂并不会追随这一步伐。任天堂已经确认该公司未来的第一方游戏不会使用生成式AI技术。 在公司最近的投资人问答会上&#xff0c;任天堂描绘了公司未来游戏愿景。在谈到AI技…