• android studio 插件开发(自动生成框架代码插件)


    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

  • 相关阅读:
    Leetcode Minimum Path Sum
    Leetcode House Robber II
    洛谷 P5375 【[THUPC2019]组合数据结构问题】题解
    洛谷 P1855 【榨取kkksc03】题解
    CF1173A 【Nauuo and Votes】题解
    [NOIP2018D1T1][NOIP2013D1T1][Luogu P5019]铺设道路 题解
    [BZOJ1083][SCOI2005]繁忙的都市 题解
    统计自己洛谷AC题目爬虫
    CF43A Football 题解
    SP2 PRIME1
  • 原文地址:https://www.cnblogs.com/gaoteng/p/5684076.html
Copyright © 2020-2023  润新知