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 , 歡迎關注

相關文章
相關標籤/搜索