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

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78113868
本文出自【赵彦军的博客】html

一:概述

若是不了解插件开发基础的同窗能够先看,git

Android Studio 插件开发详解一:入门练手
Android Studio 插件开发详解二:工具类github

在上面的两篇文章,讲解了插件开发的基础,今天就来一个优势难度的项目,插件的名字叫 AndroidPluginTranslate , 顾名思义就是能够翻译文案的插件,废话很少说,先看最终效果图:json

这里写图片描述

2、准备工做

一、环境变量配置及软件安装,这里省略,我在 Android Studio 插件开发详解一:入门练手 说的很清楚。api

二、新建项目 AndroidPluginTranslate ,以下图所示:微信

这里写图片描述

3、编码

(1)关键知识

编码实际上核心的一个类叫作AnAction,能够直接选择NEW->Action,以下图:ide

这里写图片描述

而后填写一些相关信息工具

这里写图片描述

须要填写的属性以下:学习

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

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

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

这里写图片描述

建立好 TranslateAction 后,它的代码很简单,以下:

import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;

public class TranslateAction extends AnAction {

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

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

此外咱们刚才填写的信息,也在plugin.xml中完成了注册,你们能够进去看一眼,actions的标签以下:

<idea-plugin>

  <id>com.your.company.unique.plugin.id</id>
  <name>Plugin display name here</name>
  <version>1.0</version>
  <vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor>

  <description><![CDATA[
      Enter short description for your plugin here.<br>
      <em>most HTML tags may be used</em>
    ]]></description>


  <actions>

      <action id="TranslateActionID" class="action.TranslateAction" text="Translate"
              description="TranslateAction TranslateAction">
        <add-to-group group-id="EditMenu" anchor="first"/>
        <keyboard-shortcut keymap="$default" first-keystroke="ctrl Q"/>
      </action>

  </actions>
<idea-plugin>

这里你们必定要注意,要对 <id><name><version><vendor><description> 这几个标签要认真填写,其中 <id> 是这个插件的 id ,必定不能和市场上的其余插件同样;<description> 是描述这个插件的功能,尽量的写的详细,不然在上架插件市场的的时候,会审核不过,白白浪费时间。

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

  • 得到当前选中的单词
  • 调用相关API获得单词的意思
  • 经过一个相似于PopupWindow来显示

(2)建立工具类

Android Studio 插件开发详解二:工具类 中介绍了三个工具类,分别是 http 工具类 HttpManager、json 解析工具类 JsonUtil 、日志打印工具类 Logger 。咱们须要建立一个 util 包,而后把这三个类拷贝到咱们的项目中。项目结构以下图所示:

这里写图片描述

有了这三个工具类就大大减轻了咱们的开发任务。

(3) 得到当前选中的单词

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,从字面上仍是蛮好理解的。

(4)调用相关API获得单词的意思

调用的 API 咱们选择有道云的翻译 API
有道智云:http://ai.youdao.com/
有道智云API文档:http://ai.youdao.com/docs/doc-trans-api.s#p02

家若是想要作单词翻译,能够看下,很是简单, 不过这个API 如今是收费了,新注册的用户会有 100 元的体验金。

接口的调用这里不细说,官方有很详细的说明,另外本例子会上传至 Github , 还不清楚能够去个人Github 查看。咱们根据返回的 json 字符串生成了一个类 TranslateBean;而后经过 Gson 转化为TranslateBean对象。

好了,有了返回的数据之后,直接经过一个相似popupWindow展示便可。

(5)经过一个相似于PopupWindow来显示

涉及到的代码:

/**
     * 显示一个Popwindow
     *
     * @param editor
     * @param result
     */
    private void showPopupBalloon(final Editor editor, final String result) {
        ApplicationManager.getApplication().invokeLater(new Runnable() {
            public void run() {
                LogUtil.thread();
                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源码均可以,固然也有文档:

  • http://www.jetbrains.org/intellij/sdk/docs/tutorials.html

有兴趣的能够整理各类类型的插件,好比弹出popupWindow,生成代码,生成文件类别的,而后对相关的API进行收集与整理。

4、插件部署

(1)、插件输出

Build --> Prepare Plugin Module... 生成插件。插件输出为 xxx.jar 包 或者 xxx.zip 包。

这里写图片描述

安装插件,这里就不讲了,在 Android Studio 插件开发详解一:入门练手 已经讲的很清楚了。

(2)插件演示

把插件安装在 Android Studio 后,重启 Android Studio ,就能够愉快的使用插件了

这里写图片描述

(3)插件上传到市场

插件上传到市场在这里就不讲了,详见 Android Studio 插件开发详解一:入门练手

5、总结

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

  • 下载Intellij IDEA,新建一个Intellij IDEA plugin的项目
  • 而后在里面new Action以及编写API
  • 点击prepare plugin生成jar,这个jar就能够用来安装了。

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

最后全部的代码都将上传至:https://github.com/zyj1609wz/AndroidPluginTranslate

参考资料

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


我的微信号:zhaoyanjun125 , 欢迎关注

相关文章
相关标签/搜索