学会编写Android Studio插件 别停留在用的程度了

本文为原创,授权公众号:hongyangAndroid独家代理原创发布。

转载请标明出处:

http://blog.csdn.net/lmj623565791/article/details/51548272

本文出自:【张鸿洋的博客】

一、概述

相信大家在使用Android Studio的时候,或多或少的会使用一些插件,适当的配合插件可以帮助我们提升一定的开发效率,更加快乐。例如:

有句话叫做授人以鱼不如授人以渔,不能一直跟随着别人的脚步去使用插件了,有必要去学习编写插件,当自己有好的创意的时候,就可以自己实现了。So,本文的内容是:

  • 自己编写一个Android Studio插件

ok,其实编写插件并不难,官方也有详细的文档,所以你也可以选择直接阅读下文学习:

为了文章有一定的流畅性,决定以ECTranslation作为编写Android Studio插件的例子。

我为什么选这个呢?因为创意好,实用并且代码简单。

贴一个今天这个插件的最终效果图:

注:效果与ECTranslation基本一致,本文仅用作学习,不造轮子,如果需要使用,直接使用ECTranslation即可。

二、准备工作

首先需要安装IntelliJ IDEA

下载好就可以了~~

然后安装,运行,点击create New Project:

按照上图进行选择,如果没有SDK,则点击New新建一个即可。

然后点击Next,输入项目名称选择位置,就可以点击finish了。

项目的结构如下:

src目录下主要用于存放我们编写的代码。

这样准备工作就结束了~~

三、编码

(1) 关键知识

编码实际上核心的一个类叫做AnAction,可以直接选择NEW->Action,如下图:

然后填写一些相关信息:

需要填写的属性如下:

  • ActionID:代表该Action的唯一的ID,一般的格式为:pluginName.ID
  • ClassName:类名
  • Name:就是最终插件在菜单上的名称
  • Description:对这个Action的描述信息

然后往下,选择这个Action即将存在的位置:

我们选择的是EditMenu,右侧选择为first,即EditMenu下的第一个,效果如图:

再往下就是制定快捷键了~~

都填写完成就可以点击OK了。

点击ok之后,可以看到为我们生成了下类:

public class TranslateAction extends AnAction {
    @Override
    public void actionPerformed(AnActionEvent e) {
        // TODO: insert action logic here
    }
}

此外我们刚才填写的信息,也在plugin.xml中完成了注册,大家可以进去看一眼,actions的标签中,

当我们点击菜单的时候,就回触发actionPerformed()方法。

那么这么看,我们在这个方法中只要完成三件事:

  1. 获得当前选中的单词
  2. 调用相关API得到单词的意思
  3. 通过一个类似于PopupWindow来显示

当然,为了尽快的测试,你可以先在里面弹一个对话框,例如如下:

 public void actionPerformed(AnActionEvent event) {
        Messages.showMessageDialog("Hello World !", "Information", Messages.getInformationIcon());
    }

预期效果是点击Tranlate菜单,或者按快捷键会弹出一个提示对话框。

那么点击Run:

然后它会默认启动一个新的IntelliJ IDEA的界面,你可以随便新建一个项目,进入以后,你会发现Edit下多了一个Translate菜单,点击即可弹出我们设定的对话框:

ok,测试通过就放心了~

  1. 获得当前选中的单词
  2. 调用相关API得到单词的意思
  3. 通过一个类似于PopupWindow来显示

剩下的就是功能性的API了~

(2) 获得当前选中的单词

 @Override
public void actionPerformed(AnActionEvent e) {
    // TODO: insert action logic here
    final Editor mEditor = e.getData(PlatformDataKeys.EDITOR);
    if (null == mEditor) {
        return;
    }
    SelectionModel model = mEditor.getSelectionModel();
    final String selectedText = model.getSelectedText();
    if (TextUtils.isEmpty(selectedText)) {
        return;
    }
}

是不是觉得API很陌生,恩,我也觉得很陌生,关于API这里介绍其实没什么意义,本文主要目的是让大家对自定义插件有个类helloworld的认识,至于插件里面的代码涉及到的API等到大家需要编写插件的时候,再详细学习就好了,现在就不要浪费精力记忆这些东西了。

上面的代码就是获得选中的文本,通过一个Editor,然后拿到SelectionModel,再拿到selectedText,从字面上还是蛮好理解的。

拿到选中的文本之后,应该就是去查询该单词的意思了,查询呢,ECTranslation用的是youdao的Open SDK,其实也很简单,就是拼接一个url,然后等着解析返回数据就好了。

(3)调用相关API得到单词的意思

有道API的地址:

大家如果想要做单词翻译,可以看下,非常简单。

涉及到的代码:

String baseUrl = "http://fanyi.youdao.com/openapi.do?keyfrom=Skykai521&key=977124034&type=data&doctype=json&version=1.1&q=";

HttpUtils.doGetAsyn(baseUrl + selectedText, new HttpUtils.CallBack() {
    public void onRequestComplete(String result) {
        Translation translation = gson.fromJson(result, Translation.class);
        showPopupBalloon(mEditor, translation.toString());
    }
});

HttpUtils就不贴了,就是直接开了个线程,通过HttpUrlConnection去访问网络,大家的项目中或者通过搜索引擎,代码一搜一堆。

baseUrl就是有道的url,加上我们选中的单词就是完整的url了,然后通过http访问,callback回调出返回的字符串,这里返回的是json类型的字符串。

baseUri是:

我们根据返回的json字符串生成了一个类Translation;

然后通过Gson转化为Translation对象。

ps:拿着上面的baseUrl后面跟一个任何单词,直接访问浏览器就能看到返回的json数据了,这里大家天天写接口,类似的步骤比我肯定还熟悉。

好了,有了返回的数据以后,直接通过一个类似popupWindow展现即可。

(4)通过一个类似于PopupWindow来显示

涉及到的代码:

private void showPopupBalloon(final Editor editor, final String result) {
    ApplicationManager.getApplication().invokeLater(new Runnable() {
        public void run() {
            JBPopupFactory factory = JBPopupFactory.getInstance();
            factory.createHtmlTextBalloonBuilder(result, null, new JBColor(new Color(186, 238, 186), new Color(73, 117, 73)), null)
                    .setFadeoutTime(5000)
                    .createBalloon()
                    .show(factory.guessBestPopupLocation(editor), Balloon.Position.below);
        }
    });
}

这个API,恩,我copy的源码,依然是不求记住,知道这有个类似的功能即可。

简单看一下,是通过创建一个JBPopupFactory,然后通过它创建一个HtmlTextBalloonBuilder,通过这个builder去设置各种参数,最后show。

ok,对于一个入门的例子,不要太强求对插件中这些API的掌握,还是那句话,等需要写了再去查,需要什么功能,哪怕到对应的插件中去copy源码都可以,当然也有文档:

有兴趣的可以整理各种类型的插件,比如弹出popupWindow,生成代码,生成文件类别的,然后对相关的API进行收集与整理。

这样代码写完了,先测试一下,点击RUN,然后看效果~

我们这里肯定是测试没问题的,效果图就是开始的那个gif.

如果没有问题,就可以去部署和发布我们的插件给别人去使用了。

这两部也非常简单。

四、部署插件

(1)填写插件相关信息

打开项目文件的plugin.xml,如下图:

在里面填写id,name,version等。。。记得随便填一下~

然后,点击build->prepare plugin…,如下图:

会在项目的根目录生成一个jar,如图:

这个jar就可以用于安装了。

(2)安装插件

打开Andorid Studio,选择Preferences -> Plugins -> Install plugin from disk,选择我们生成的jar即可,如图:

点击安装,然后重启即可。

好了,重启完成就可以在EDIT下看到Translate菜单了,选中单词,点击菜单或者快捷键都能实现翻译了。

如果你有兴趣,赶紧编写一个插件自己玩吧。

当然,还可以把我们的插件发布到仓库,支持在plugin中搜索安装,参考:

就是注册账号,提交jar,填写信息,等着审核就可以了。

五、总结

终于到了总结的环节,这么长的文章其实编写插件总结起来就几句话。

  1. 下载Intellij IDEA,新建一个Intellij IDEA plugin的项目
  2. 然后在里面new Action以及编写API
  3. 点击prepare plugin生成jar,这个jar就可以用来安装了。

恩,就是这么简单,实践起来会比较麻烦一点,等成功以后,回过头来总结,发现步骤其实就那么几个步骤~~对于实际的Action相关的API,等你在编写相关插件的时候,参考别的类似插件,查看官方文档都可以。


微信公众号:hongyangAndroid

- 不要错过每一篇干货 - 支持投稿

时间: 2025-01-19 21:25:34

学会编写Android Studio插件 别停留在用的程度了的相关文章

优秀的 Android Studio 插件

转自:http://www.codeceo.com/article/8-android-studio-plugins.html Android Studio是目前Google官方设计的用于原生Android应用程序开发的IDE.基于JetBrains的IntelliJ IDEA,这是Google I/O 2013第一个宣布的作为Eclipse的继承者,深受广大Android社区的欢迎.在经过漫长的测试阶段后,最终版本于去年12月发布. Android Studio是一个功能全面的开发环境,装备了

最完整Android Studio插件整理 (转)

转自:http://blog.csdn.net/alpha58/article/details/62881144 现在Android的开发者基本上都使用android Studio进行开发(如果你还在使用eclipse那也行,毕竟你乐意怎么样都行).使用好Android Studio插件能大量的减少我们的工作量. 1.GsonFormat 快速将json字符串转换成一个JavaBean,免去我们根据json字符串手写对应javaBean的过程. 使用方法:快捷键Alt+S也可以使用Alt+Ins

8 个最优秀的 Android Studio 插件

8 个最优秀的 Android Studio 插件

Android Studio插件安装及使用Genymotion模拟器

Android Studio插件安装及使用Genymotion模拟器 Android Studio自带的模拟器速度已经比Eclipse插件的快一点了,但是还不够暴力,不够爽.现在来说说最暴力的Genymotion模拟器如何结合AS使用.首先上Genymotion官网下载安装Genymotion,同时你需要在Genymotion官网官网上注册一个账号,这样你才能正常的使用Genymotion. 进入AS的Settings界面左侧找到Plugins,点击下图箭头Button(也就是在线安装): 顺便

Android studio 插件之 GsonFormat (自己主动生成javabean)

概述 相信大家在做开发的过程中都写过非常多的javabean ,非常多情况下 都是一个列表数据就是一个单独的javabean.假设大家自己敲的话费时费力 还非常easy敲错. 今天给大家推荐一个插件 GsonFormat  这个插件就是能够让我们直接将服务端返回的json转化为实体类.Android studio和idea都有, eclipse我没有试过. 大家能够找找有没有. 操作步骤 第一步  下载插件 下载插件的过程我前面有一篇博客已经有具体步骤 Android Studio插件之sexy

推荐几款实用的Android Studio 插件

推荐几款实用的Android Studio 插件 泡在网上的日子 发表于 2015-10-09 10:47 第 17453 次阅读 插件,Android Studio 10 编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! 原文出处:http://www.jianshu.com/p/6f5f818afe4b 1.android-butterknife-ze

Android Studio插件整理

现在Android的开发者基本上都使用Android Studio进行开发(如果你还在使用eclipse那也行,毕竟你乐意怎么样都行).使用好Android Studio插件能大量的减少我们的工作量. 1.GsonFormat 快速将json字符串转换成一个Java Bean,免去我们根据json字符串手写对应Java Bean的过程. 使用方法:快捷键Alt+S也可以使用Alt+Insert选择GsonFormat 2.Android ButterKnife Zelezny 配合ButterK

Android studio 插件之 GsonFormat (自动生成javabean)

概述 相信大家在做开发的过程中都写过很多的javabean ,很多情况下 都是一个列表数据就是一个单独的javabean,如果大家自己敲的话费时费力 还很容易敲错. 今天给大家推荐一个插件 GsonFormat  这个插件就是可以让我们直接将服务端返回的json转化为实体类,Android studio和idea都有, eclipse我没有试过.大家可以找找有没有. 操作步骤 第一步  下载插件 下载插件的过程我前面有一篇博客已经有详细步骤 Android Studio插件之sexy edito

Android Studio 插件 Statistic

Android Studio插件的使用确实给我们的开发带来了很多便利,很多的插件也是应出不穷,下面主要介绍一个不经常使用的插件-Statistics. Android Studio 是没有提提供统计代码全部行数的功能的,但是对于开发者来说,这个功能确实必备的,Statistic统计代码行数非常方便,也很详细. 1,首先肯定是将插件下载下来,下载地址:https://plugins.jetbrains.com/plugin/4509 2,下载下来之后我们将插件安装到AS上面: 点击设置小按钮: 进