轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/78113868 本文出自 "【趙彥軍的博客】" 一:概述 如果不瞭解插件開發基礎的同學可以先看, "Android Studio 插件開發詳解一:入門練手" "Android Stud ...
轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/78113868
本文出自【趙彥軍的博客】
一:概述
如果不瞭解插件開發基礎的同學可以先看,
Android Studio 插件開發詳解一:入門練手
Android Studio 插件開發詳解二:工具類
在上面的兩篇文章,講解了插件開發的基礎,今天就來一個優點難度的項目,插件的名字叫 AndroidPluginTranslate , 顧名思義就是可以翻譯文案的插件,廢話不多說,先看最終效果圖:
二、準備工作
1、環境變數配置及軟體安裝,這裡省略,我在 Android Studio 插件開發詳解一:入門練手 說的很清楚。
2、新建項目 AndroidPluginTranslate ,如下圖所示:
三、編碼
(1)關鍵知識
編碼實際上核心的一個類叫做AnAction,可以直接選擇NEW->Action,如下圖:
然後填寫一些相關信息
需要填寫的屬性如下:
- ActionID:代表該Action的唯一的ID,一般的格式為:pluginName.ID
- ClassName:類名
- Name:就是最終插件在菜單上的名稱
- Description:對這個Action的描述信息
然後往下,選擇這個Action即將存在的位置:
我們選擇的是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="[email protected]" 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源碼都可以,當然也有文檔:
有興趣的可以整理各種類型的插件,比如彈出popupWindow,生成代碼,生成文件類別的,然後對相關的API進行收集與整理。
四、插件部署
(1)、插件輸出
Build --> Prepare Plugin Module... 生成插件。插件輸出為 xxx.jar 包 或者 xxx.zip 包。
安裝插件,這裡就不講了,在 Android Studio 插件開發詳解一:入門練手 已經講的很清楚了。
(2)插件演示
把插件安裝在 Android Studio 後,重啟 Android Studio ,就可以愉快的使用插件了
(3)插件上傳到市場
插件上傳到市場在這裡就不講了,詳見 Android Studio 插件開發詳解一:入門練手
五、總結
終於到了總結的環節,這麼長的文章其實編寫插件總結起來就幾句話。
- 下載Intellij IDEA,新建一個Intellij IDEA plugin的項目
- 然後在裡面new Action以及編寫API
- 點擊prepare plugin生成jar,這個jar就可以用來安裝了。
恩,就是這麼簡單,實踐起來會比較麻煩一點,等成功以後,回過頭來總結,發現步驟其實就那麼幾個步驟~~對於實際的Action相關的API,等你在編寫相關插件的時候,參考別的類似插件,查看官方文檔都可以。
最後所有的代碼都將上傳至:https://github.com/zyj1609wz/AndroidPluginTranslate
參考資料
學會編寫Android Studio插件 別停留在用的程度了
個人微信號:zhaoyanjun125 , 歡迎關註