图标和图片

走着路睡觉大约 3 分钟

图标和图片

使用图标和图片

为某个操作指定图标,自定义组件图标,工具栏图标

提示

插件logo不同于本部分的图标和图片,可以参考文档 插件Logo

自定义图标 VS 系统图标

可以使用平台自有的图标,图标列表open in new window 里列举了所有平台自有图标。插件图标的类名是 <PLUGIN_NAME> Icons(例如 GithubIconsopen in new window

如果要自己设计图标,设计原则请参数 文档open in new window

如何组织和使用图标

提示

插件示例请查看 https://github.com/JetBrains/intellij-sdk-code-samples/tree/main/action_basics

图标和图片资源应该放在 iconsresources目录下

使用**IconLoader.getIcon()**方法访问图标,资源的路径以 "/" 开始

在名为 icons 的顶级包中定义一个类或接口,将图标常量作为静态字段:

从2021.2版本开始,不再必须使用 “*Icons” 类,可以使用 my.plugin.MyIcons

在需要在 plugin.xml中指定操作(action)或 扩展点(extension point)的icon的时候,icon的属性需要添加@Presentationopen in new window 注解,注意:不能指定icons 的包名前缀, 系统会自动识别


<plugin>
    <actions>
        <action
                id="DemoPlugin.DemoAction"
                <!--上面定义的 MyIcons-->
                icon="MyIcons.Action"
        ... />
    </actions>

    <extensions defaultExtensionNs="com.intellij">
        <toolWindow
                id="CustomStructure"
                <!--上面定义的 MyIcons-->
                icon="MyIcons.Structure"
        ... />
    </extensions>
</plugin>

图片格式

IntelliJ Platform支持Retina和 Darcula(暗黑模式),可以为这两个模式设置不同的图片,一般情况下,如果图片在Darcula模式下也能使用的话,则不需要单独指定Darcula图片

不同的组件图片的尺寸要求不一样,见下图:

svg格式

2018.2 以后的版本支持svg格式

最小的svg图片如下,将以下内容保存为 name.svg会得到一张svg图片:

<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
  <rect width="100%" height="100%" fill="green"/>
</svg>

提示

可以在 https://bjansen.github.io/intellij-icon-generator/ 生成svg图片

png格式

提示

如果你的IntelliJ Platform版本大于 2018.2,建议使用svg格式,可以获取更好的显示效果

所有的图标必须放在同一个文件夹里,且符合下面的命名规则(如何是svg图片,把后缀换为.svg):

  • iconName.png 宽 * 高 (W * H)在具有默认主题的非 Retina 设备上使用

  • iconName@2x.png 宽 * 高 (2W * 2H)在具有默认主题的 Retina 设备上使用

  • iconName_dark.png 宽 * 高 (W * H)在具有暗黑主题的非 Retina 设备上使用

  • iconName@2x_dark.png宽 * 高 (2W * 2H) 在具有暗黑主题的 Retina 设备上使用

IconLoader 会根据当前环境加载相应的图标

以下是 toolWindowStructure.png 图标表示的示例:

toolWindowStructure.png

动态图标

任何的动态图标都是一组图标的延时循环显示;

AnimatedIconopen in new window 可以创建一个动态图标。

如果需要创建一个每个图标都具有相同时延的动态图标,可以使用以下方式:

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

如果每个图标都具有不同的时延,可以使用 AnimatedIcon.Frame ,指定每个图标和它的时延。

如果需要显示一个长时间运行的动态图标,可以使用预定义的 AnimatedIcon.Default 加载器图标,它有一个更大的版本 AnimatedIcon.Big

上次编辑于:
贡献者: zhaojingbo
Loading...