android studio 插件开发

起因

去年公司开始上新项目,正好android在架构这方面的讨论也开始多了起来,于是mvp架构模型就进入我们技术选择方案里面,mvp有很多好处,但是有一个非常麻烦的地方是代码量很大,写一个页面需要写很多接口类回调。所以当时就想写一个插件用代码来生成,但是迫于项目紧急一直没有研究。最近公司项目不是很紧,所以抽空搞了下.

过程

刚开始选择方案,我是准备拿python写,因为之前也接触过,写过一点小程序,所以还算比较顺手,但是写了一半之后,感觉用python和androidstudio结合不是很紧密,通过了解,开发android studio的插件也是用java,所以就再次换成开发android studio的方式。

由于android studio是用的IntelliJ IDEA的开源版本做的,所以开发android studio的插件 ,其实就是开发IntelliJ IDEA的插件,所以IntelliJ IDEA是必须的,可以在官网去下载社区免费开源版本。

下载好之后,新建项目

选择sdk 里面的jdk的目录。这样就新建好了一个插件工程

里面有如下两个重要的目录

其中plugin文件中主要进行一些插件配置,比如说插件名字,插件的官网,当然一些按钮之类的也是在这里面配置

<idea-plugin version="2">
<id>com.gaotenglife.create</id>
<name>MVP_CODE_CREATOR</name>
<version>1.0</version>
<vendor email="gaotengxuelang@gmail.com" url="http://www.gaotenglife.com">xuelang</vendor>
<description>
帮助生成mvp框架代码
</description>
<change-notes><![CDATA[
Add change notes here.<br>
<em>most HTML tags may be used</em>
]]>
</change-notes>
<idea-version since-build="141.0"/>
<extensions defaultExtensionNs="com.intellij">
</extensions>
<actions>
<group id="MvpPlugin.SampleMenu" text="_MvpTools" description="tools">
<add-to-group group-id="MainMenu" anchor="last" />
<action id="MvpPlugin.CreateFileAction" class="CreateMVPFiles" text="CreateFiles" description="createfiles" />
</group>
</actions>
<application-components>
</application-components>
</idea-plugin>

上面大概一看就能懂,下面一块就主要用来定义点击事件,其中的class代表点击事件的类

<actions>
<group id="MvpPlugin.SampleMenu" text="_MvpTools" description="tools">
<add-to-group group-id="MainMenu" anchor="last" />
<action id="MvpPlugin.CreateFileAction" class="CreateMVPFiles" text="CreateFiles" description="createfiles" />
</group>
</actions>

同时我们在src目录下新建一个java类,继承自AnAction

public class CreateMVPFiles extends AnAction {
@Override
public void actionPerformed(AnActionEvent event) {
project = event.getData(PlatformDataKeys.PROJECT);
packagebase = readPackageName();
initSelectView();
project.getProjectFilePath();
}
}

其中actionPerformed方法就是点击响应的方法.

接下来主要就是java swing的一些界面操作了,比如你可以新建jframe jdialog

等等。这样简单的入门插件你就能开发了。

下面是我写的项目的源代码地址

MvpCodeCreator插件代码地址

个人网站:www.gaotenglife.com

转载请注明出处http://www.cnblogs.com/gaoteng/p/5684076.html

转载请注明出处http://www.gaotenglife.com/?p=399

android studio 插件开发(自动生成框架代码插件)的更多相关文章

  1. Android Studio 配置快速生成模板代码

    前言 Android studio 有提供快速生成模板代码的功能,其实这个功能也可以自定义配置.此篇博客将讲解如何使用此功能 进入Settings 选择 Editor > Live Templa ...

  2. 动手试试Android Studio插件开发

    由于业务关系,经常需要写一些表单页面,基本也就是简单的增删改查然后上传,做过几个页面之后就有点想偷懒了,这么低水平重复性的体力劳动,能不能用什么办法自动生成呢,查阅相关资料,发现android stu ...

  3. Android Studio 插件开发详解三:翻译插件实战

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78113868 本文出自[赵彦军的博客] 一:概述 如果不了解插件开发基础的同学可以 ...

  4. MyBatis代码自动生成(利用eclipse插件)

    上一篇文章已经介绍了利用命令的方式自动生成mybatis代码,但是每次都去运行cmd命令感觉还是有点麻烦,所以找了些资料发现eclipse里面也可以安装插件自动生成代码,下面简单介绍一下,也是给自己以 ...

  5. Android Studio 插件开发详解一:入门练手

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112003 本文出自[赵彦军的博客] 一:概述 相信大家在使用Android S ...

  6. 借Adobe XD之力,自动生成Flutter代码

    概述 今天,我们来聊聊一个专门为"懒人程序员"准备的工具--Adobe XD.使用它可以快速将原型设计图转换为可执行的Flutter代码, 而由于Flutter自身跨平台的特性,因 ...

  7. Android Studio 插件开发详解二:工具类

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...

  8. Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  9. Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld

    前言(Prologue) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android ...

随机推荐

  1. Current_Path 获取脚本所在路径(当前路径),取当前时间做文件名(uformat)

    获取脚本当前所在路径: $CurrentPath = $MyInvocation.MyCommand.Path.substring(0,$MyInvocation.MyCommand.Path.Las ...

  2. python基础语法1

    一.基础语法 1.常量 python语言没有真正的常量,它只是字面常量. 2.变量 变量是一个指针,它指向一块内存. 变量的命名规则: 1)只能包含字母.数字和下划线: 2)只能以字母或者下划线开始: ...

  3. Web Service超限

    问题现状: {System.ServiceModel.CommunicationException: An error occurred while receiving the HTTP respon ...

  4. 021.3 IO流——字节流-FileInputStream读取字节

    内容:文件读取方法,读取方法例子,read(buf)方法中buf的取值,字节流缓冲区对象—提高读取速度/// 文件读取方法:fis.read(),fis.read(buf),具体看例子 例子:文件读取 ...

  5. 020.2.2 runtime类

    基本不用,简单看一下就行了 1.属于单例的一个实例,可以通过getRuntime()获取对象Runtime r = Runtime.getRuntime();r.exec("winmine. ...

  6. Jarsigner签名使用

    转载请标明出处: http://www.cnblogs.com/why168888/p/6548544.html 本文出自:[Edwin博客园] 如何签名: jarsgner-verbose-keys ...

  7. luogu P2742 【模板】二维凸包

    嘟嘟嘟 没错,我开始学凸包了. 其实挺简单的. 前置技能: 1.极坐标系 2.向量叉积 1.极坐标系 就是一种二维坐标系.只不过两个坐标分别表示向量和极轴的角度和自身的长度.对于不同的问题,极轴可以自 ...

  8. WPF实战俄罗斯方块

    概述 本文试图通过经典的游戏-俄罗斯方块,来演示WPF强大的图形界面编程功能. 涉及的图形方面有这几个方面: 1.不规则界面的设置 2.布局系统的使用 3.2D图形的应用 4.输入事件的响应 5.风格 ...

  9. Struts2通配符

    action: struts: or: 请求路径:

  10. HDU 1165 Eddy's research II(给出递归公式,然后找规律)

    - Eddy's research II Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...