实现的效果
首先展示一下运行的效果
这里展示了自动新建mvp架构
了解基本概念
开发环境
工欲善其事必先利其器,如果要开发一个软件,那么我们首先需要了解的这个软件的开发工具。平常我们开发android 使用都是android studio ,但是很遗憾,android studio 由于太过于定制化导致无法用于插件的开发。而这时候我们就需要android studio 的老爸 IntelliJ IDEA。
idea 的下载地址:https://www.jetbrains.com/idea/
在idea的官网,我们可以看到有收费版和社区版(也就是免费版)。这里我们选择idea的免费版就可以了。后面的安装过程暂且不表,相信都会安装了
新建项目
新建项目的时候如下图一样选择IDE Plugin,填写我们的项目名称和选择我们项目目录,sdk也如下图一样选择,后面直接create,这样我们的第一个项目就建好了。
这时候,接。然后点finish即可。
项目结构
建好项目以后,我们就可以看到如下的项目结构
- .idea : idea的一些配置信息。
- resources/META-INF/plugin.xml: 插件的一些描述信息。类似android中的Manifest文件。
- java: 这里就是写代码的地方,类似android 中java
项目整体配置
和android 项目类似。插件的也是有一个总体的配置文件,也就是我们在上面看到的plugin.xml文件。
这个文件看起来很多很乱,其实我们一项一项的去看的时候,一点都不复杂。
- id: 这个就是该插件的唯一标识符了。类似于android的包名。在android 中如果包名重复的话,就会出现后面的软件无法安装的问题。而在插件中表现出来的就是后面安装的插件会覆盖前面的。所以一定要记得改成自己的id。
- name: 这个就类似于android 中的应用名称
- version: 插件的版本
- vendor: 这个里面就是你的个人信息了。如果你想给自己写的插件打上自己的烙印,就改写这里。
- description: 这个里面就是描述一下,这个插件是干啥的。可以使用html标签来编写
- change-notes 更新信息
- extensions defaultExtensionNs 默认依赖的库
- actions 类似于android 中的activity。所有使用到的action,都要在这里进行注册。
开始编写插件
新建action
我们知道,在android 中,我们开始一个项目的第一步就是新建一共activity。而在这个项目中也是类似的,我们需要新建一共action。这里我们只需要在src下面的某个需要添加action的文件夹,右击->New->Plugn DevKit->Action。即可
这时候,我们会弹出一共弹窗。
其中,Action Id,Class Name就不多说了,Name为显示给用户的动作名称,Description为操作的描述。
Groups是比较重要的,他代表了我们按钮展示的位置。比如选择GenerateGroup,就是在Generate中显示(Windows中快捷键alt+insert,Mac快捷键control+enter)。还有build、code(显示在菜单栏上build、code按钮中)等等一系列Groups的位置,大家根据需要自己选择。不知道意思的网上查一下就好。
右边Actions是选择按钮位置的,First和Last分别为菜单最上方和最下方,点击Actions中的按钮,可以选择在该按钮的下方和上方。我这里模仿了ButterKnife Zelezny选择了GenerateGroup,并且放在了最下方。
这里我们再点击ok,就完成了第一个action的新建。
这时候我们再回头看看我们的plugin.xml.就会发现我们刚刚新建的action,已经自动添加好了。
这时候,我们只要点击右上角的运行,我们的第一个插件就运行起来了。
在新打开的idea的选择自己的项目,然后右击点击genetate.就能看到我们刚刚注册的"MvpAction"。当然这个时候你点击是没有任何效果的。
了解action
这里我们打开刚刚新建的action,会发现里面空空如也。只有一个actionPerformed的函数。其实你用Android
的想法去了解很自然的就能猜到这个函数的作用,就是类似oncreate,是作为我们整个程序的入口。但是这个函数被调用的时机,是在用户去点击你的action。
显示Dialog
我们都知道 ,plugin基本上都是基于java来开发的。所以理所当然的plugin的界面也是采用了java 的Swing。
就如同我们在android 中创建View一样,在plugin 中,我们也有两种方式创建UI界面,一种是通过Code直接创建。还有一种是通过IDE提供的工具,可视化创建。
目前在最新版本的Idea中,对于创建dialog,做了非常好的封装,体验非常好。所以这里我们选择通过可视化工具创建。
新建dialog
就如同之前创建Action一样简单,这里只需要点击Create Dialog Class 按钮,就会自动创建对应的文件。
其中我们发现生成了两个文件
其中.java 文件,就是我们dialog 的逻辑控制类似android中的dialog。
而.form 文件,就是dialog的 layout 了,类似android中的 l