idea插件开发-Icon and Image

本文介绍了如何在IntelliJ平台中获取和使用图标资源,包括从指定文件夹通过IconLoader获取图标,建议的图标尺寸,SVG和PNG格式的要求,以及如何创建和使用AnimatedIcon。此外,还详细阐述了支持新UI的步骤,如创建expUi文件夹,复制图标,配置IconMappings.json文件,并通过iconMapper扩展点进行注册。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、图标

1、图标获取

        图标一般放在src/main/resources文件夹下的特定文件夹中,比如icons,然后可以通过IconLoader工具类来获取;

public interface MyIcons {

  Icon Action = IconLoader.getIcon("/icons/myAction.png", MyIcons.class);
  Icon Structure = IconLoader.getIcon("/icons/myStructure.png", MyIcons.class);
  Icon FileType = IconLoader.getIcon("/icons/myFileType.png", MyIcons.class);

}

        然后就可以在plugin.xml中使用MyIcons.java中定义的这些常量了,不需要指定package。如果是使用硬编码方式实现可以使用 @Presentation注解。

<actions>
  <action
          id="DemoPlugin.DemoAction"
          icon="MyIcons.Action"/> <!--不需要指定package->
</actions>

 2、建议的图标尺寸

  • Node, Action, Filetype:16x16
  • toolWindows:13*13
  • Editor gutter:12*12

二、图标要求

1、.svg       

因.svg是矢量图标,所以提供默认16*16即可。

2、.png

  • 默认:iconName.png
  • 深色theme:iconName_dark.png
  • 默认2倍大小:iconName@2x.png
  • 深色theme2倍:iconName@2x_dark.png

3、animated Icons

        要从具有不同延迟的帧创建图标,请使用AnimatedIcon.Frame. 每一帧代表一个图标,以及到下一帧的延迟。如果你想在某个地方显示有一个漫长的过程,你可以使用预定义的AnimatedIcon.Default加载器图标。

AnimatedIcon icon = new AnimatedIcon(500,
          AllIcons.Ide.Macro.Recording_1,
          AllIcons.Ide.Macro.Recording_2);

4、icon tooltips

        通过注册com.intellij.iconDescriptionBundle扩展点,可自动为所有工具栏配置默认图标,然后在资源文件中就可以按如下格式定义icon.<icon-path>.tooltip,比如/nodes/class.svg → icon.nodes.class.tooltip会自动加载/nodes/class.svg文件。

三、新UI支持

        如果采用系统默认的UI,则可以省略这个操作。如果插件要支持新UI,则需要经过以下操作,比如原默认UI图标的存放路径为/src/main/resources/icons。

  1. 创建名为 expUi 的文件夹在图标根目录下,路径为/icons/expUi; 可参考示例:images
  2. copy所有的图标到新创建的expUi目录下; 可参考示例:PlatformIconMappings.json:示例:MavenIconMappings.json
  3. 创建一个$PluginName$IconMappings.json,路径为/icons;
  4.  通过com.intellij.iconMapper扩展点在plugin.xml文件中注册 $PluginName$IconMappings.json, 可参考示例:plugin.xml

1、plugin.xml中配置 

<iconMapper mappingFile="MavenIconMappings.json"/>

2、Mappings.json配置 

{
  "icons": {
    "expui": {
      "folderName": {
        "expUiIcon1.svg": "icons/icon1.svg",
        "expUiIcon2.svg": "icons/icon2.svg",
      },
      "anotherFolder": {
        "expUiAnotherIcon.svg": "images/anotherIcon.svg"
      }
    }
  }
}

        在json中也可以实现一个新图标替换多个老图标,比如一个vcs.svg代替了两个原图标,配置方式如下:

"vcs.svg": [
  "toolwindows/toolWindowChanges.svg",
  "vcs/branch.svg"
]

IntelliJ IDEA 中给项目添加图标icon),通常是指设置项目的启动图标、窗口图标等。这里假设你是想为你的应用程序创建一个自定义图标,以下是详细步骤: ### 添加程序主图标 如果你是在做桌面应用,并希望更改其主图标的显示,则需根据使用的框架调整配置。 #### 对于 JavaFX 应用: 1. 将所需的 `.ico` 文件放置到 `src/main/resources` 目录下。 2. 修改启动类中的代码,在初始化界面之前加载并指定该文件作为应用程序的图标: ```java import javafx.application.Application; import javafx.scene.image.Image; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { // 设置舞台图标 primaryStage.getIcons().add(new Image("file:/path/to/icon.ico")); // 使用相对路径指向资源目录下的图片 // 其他初始设置... } public static void main(String[] args){ launch(args); } } ``` 对于 Swing 或其他 GUI 框架也有相似的做法,主要是通过 API 来设定对应的属性值。 ### 更改IDEA模块或工程本身的图标 如果你想改变的是整个 IDE 左侧“Project”视窗里边表示每个 module 的小图标的话,那么这是由插件机制控制而不是直接操作可以完成的事情;普通用户一般不需要这样做,除非你在开发特定类型的语言支持或者其他特殊功能需要定制化展示形式。 另外如果是想要更换 IntelliJ IDEA 安装后的快捷方式上所携带的那个默认蓝色方块样子的大图标——这同样不是简单地从内部修改就能达到的效果了,而是涉及到操作系统级别的关联处理以及产品自身的安装包制作过程之中,因此也不属于常规意义上的"添加 Icon".
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

korgs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值