Android Studio插件开发(一):Hello World

414 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

万码起源——Hello world

开篇明义

插件的主要类型有:

UI主题

自定义语言支持

框架集成

工具集成

用户界面插件

首先,先来介绍两个事物,Action和Plugin.xml,它们是插件最常见组成部分。

Action是Intellij定义的概念:动作,当用户点击菜单栏、工具栏按钮,按下快捷键,从键盘输入时,一个我们定义好的Action就会触发,它里面的actionPerformed()方法就会执行。

Plugin.xml则是注册Action的地方,也是配置插件各个属性的文件,从id、名称等描述性的信息,到依赖的平台,插件放在哪个位置等,都会在这里定义。

简单来说,Action就是写插件代码逻辑的地方,Plugin.xml则相当于AndroidManifest

接下来我们就来实现一个点击后,会弹出弹窗的插件。

image.png

ACTION

第一步,创建HelloWorldAction,路径如下:

main
└── kotlin(也可以选择创建java,这里是二选一的)
    └── com.xxx.xxx
        └── HelloWorldAction.kt

HelloWorldAction继承AnAction,必须要实现抽象方法actionPerformed(),这个方法我们上面也说过,插件触发后,就会执行这里的逻辑,那我们就在这里展示弹窗.

import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.ui.Messages

class HelloWorldAction : AnAction() {
    override fun actionPerformed(event: AnActionEvent) {
        val project = event.project
        //要在这个project工程里展示这个弹窗
        Messages.showMessageDialog(project, "Hello World! This is a message!",
            "Hello World Title", Messages.getInformationIcon())
    }
}

event就是运行插件时的动作事件,它里面包含了很多运行时的信息,即上下文信息。像我们这里获取的project,就是插件运行时所在的工程对象,再比如还没有提到的EditorPsiFile

Plugin.xml

第二步,注册Action

<actions>
        <!-- Add your actions here -->
        <action class="com.lzy.plugindemo.HelloWorldAcion"
                id="HelloWorldAction"
                text="Hello World Action"
                description="This is a test action">
            <!-- 设置 HelloWorld Action 的键盘快捷键-->
            <keyboard-shortcut first-keystroke="control alt 9" keymap="$default"/>
            <!-- 将HelloWorld Action添加到帮助菜单栏中 -->
            <add-to-group group-id="HelpMenu" anchor="first"/>
        </action>
    </actions>
  • class是我们的Action类
  • id是Action的唯一标识
  • text是这个Action显示给用户的文字
  • description是Action的描述,当光标在Action上时,会在左下角提示
  • keyboard-shortcut就是快捷键
  • add-to-group就是设置插件的位置,group-id有很多选择,anchor则是位置,可以设置first、last、before、after

运行后

image.png image.png


到这里,这个HelloWorld插件就开发完成了,很简单吧。

图形化界面

其实还可以通过图形化界面去创建Action,连Actionplugin.xml的注册可以一并完成。如图:

image.png

image.png

所有上面提到的属性都有,和手写配置没有区别,至于选择哪个,就纯看个人喜好了。

就这样,下一篇再见啦!