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. Layer的shadow属性

    Layer的shadow属性 Layer中的阴影都是可以做动画处理的. - (void)viewDidLoad { [super viewDidLoad]; CALayer *layer = [CAL ...

  2. DW数据库整理设置

    操作管理数据库的数据整理设置如下: 管理-全局数据库设置-数据库整理(database grooming)中,选择一个数据类型进行编辑就可以了.默认是保留7天的数据.具体可以参考如下: http:// ...

  3. 10分钟开始.Net Core

    .Net Core 2.0发布了,API也越来越多.此时不用.Net Core,更待何时? 安装.Net Core SDK         首先,我们当然要先装.Net Core SDK,在这里下载( ...

  4. 10G client连接数据库

    tnsnames.ora文件中的名字一定要顶格写(前面不留空格),不然连接时会如下报错. 已使用的参数文件:F:\oracle\product\10.2.0\client_1\network\admi ...

  5. BZOJ 1491 社交网络 Floyd 最短路的数目

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1491 题目大意: 见链接 思路: 直接用floyd算法求最短路,同时更新最短路的数目即 ...

  6. python3 安装win32api

    Python3 中先安装pip install pywin32 但是在调用时任然说找不到该模块,于是查找资料后得出需要使用python -m pip install pypiwin32.

  7. MacBook搭建go语言开发环境

    mac下要安装 go 最简单的方式是通过 homebrew 直接执行: brew update && brew upgrade brew install go 安装完成后需要指定 GO ...

  8. C#流概述

    C#流概述 .NET Framework使用“流”来支持读取或写入文件.可以将流视为一组连续的一维数据,包含开头和结尾,并且其中的游标指示了流的当前位置. 1.流操作 流中包含的数据可能来自内存.文件 ...

  9. 改变random.seed()种子值,获取不同的随机值

    random.seed() random.seed()是随机数种子,也就是为随机数提供算法,完全相同的种子产生的随机数列是相同的, 所以如果想产生不同的随机数就需要用当前时间作为种子 一般情况下see ...

  10. jquery全选 反选

    //全选 反选 $('#chkAll').on('click',function(){ $('input.chkbox').prop('checked',$(this).prop('checked') ...