图标和图片
图标和图片
使用图标和图片
为某个操作指定图标,自定义组件图标,工具栏图标
提示
插件logo不同于本部分的图标和图片,可以参考文档 插件Logo
自定义图标 VS 系统图标
可以使用平台自有的图标,图标列表 里列举了所有平台自有图标。插件图标的类名是 <PLUGIN_NAME> Icons(例如 GithubIcons )
如果要自己设计图标,设计原则请参数 文档
如何组织和使用图标
提示
插件示例请查看 https://github.com/JetBrains/intellij-sdk-code-samples/tree/main/action_basics
图标和图片资源应该放在 icons或resources目录下
使用**IconLoader.getIcon()**方法访问图标,资源的路径以 "/" 开始
在名为 icons 的顶级包中定义一个类或接口,将图标常量作为静态字段:
从2021.2版本开始,不再必须使用 “*Icons” 类,可以使用 my.plugin.MyIcons
在需要在 plugin.xml中指定操作(action)或 扩展点(extension point)的icon的时候,icon的属性需要添加@Presentation 注解,注意:不能指定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 图标表示的示例:
动态图标
任何的动态图标都是一组图标的延时循环显示;
AnimatedIcon 可以创建一个动态图标。
如果需要创建一个每个图标都具有相同时延的动态图标,可以使用以下方式:
AnimatedIcon icon = new AnimatedIcon(500, AllIcons.Ide.Macro.Recording_1, AllIcons.Ide.Macro.Recording_2);
如果每个图标都具有不同的时延,可以使用 AnimatedIcon.Frame ,指定每个图标和它的时延。
如果需要显示一个长时间运行的动态图标,可以使用预定义的 AnimatedIcon.Default 加载器图标,它有一个更大的版本 AnimatedIcon.Big